查询数据手册可知,有四个定时器,分别是TimerA0,A1,A2,B0,接下来主要针对TimerA进行主要探究.
Timer_A介绍
Timer_A是一个16位的计时器/计数器,有多达7个捕获/比较寄存器。
Timer_A可以支持多个捕获/比较,PWM输出,间隔计时。
Timer_A还具有广泛的中断功能。在溢出条件下,可以从计数器和每个捕获/比较寄存器中生成中断。
Timer_A功能包括:异步16位定时器/计数器,四种操作模式可选择和可配置的时钟源最多可配置7个捕获/比较寄存器具有脉宽调制(PWM)能力的可配置输出异步输入和输出闭锁
中断向量寄存器用于快速解码
单脉冲的PWM输出
1.设置IO口为输出模式
//P2.0 as PWM output
GPIO_setAsPeripheralModuleFunctionOutputPin(
GPIO_PORT_P2,
GPIO_PIN0
);
2.设置Timer模式
Timer_A_outputPWMParam param = {0};
param.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;
param.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;
param.timerPeriod = TIMER_PERIOD;
param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
param.compareOutputMode = TIMER_A_OUTPUTMODE_RESET_SET;
param.dutyCycle = DUTY_CYCLE;
Timer_A_outputPWM(TIMER_A1_BASE, ¶m);
效果
实测中ACLK仅有32.8HZ,SMCLK时钟有1.054Mhz.
在电机控制中,内部PWM频率设置非常有讲究,查阅的资料一般都是说在10-20Khz较好,不过具体还得看自身电机的参数。对于主频只有1MHZ的MSP430如何产生那么高的PWM呢?
两个方法:
第一个是利用UCS时钟管理系统升频
第二个是配置好TIMER_PERIOD和DUTY_CYCLE两个参数。
具体捕获比较寄存器的选择就根据原理图中对应IO口的定时器所用的设置即可。
上一篇:MSP430——UART(四)
下一篇:MSP432-SPI主从通信
推荐阅读最新更新时间:2024-11-19 23:06