TIM2->CCER|=3<<8;// OC3 高电平有效 A2 ICG TIM2->CCR3=1; // 比较寄存器为值1000 TIM...
//初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50% TIM2_CCR3H = 31250/256; TIM2_CCR3L = 31250%256; // 启动计数;更新中断失能 TIM2_CR1 |= 0x81; //TIM2_IER |= 0x00; } void Init_GPIO(void) { /*设置为推挽输出,PD2接了LED灯*/ PD_DDR |= 0X04; //设置PD2端口为输出...
TIM2-> CCR3H = 0;TIM2-> CCR3L = 0;} void SetupTimer2(){ TIM2_PSCR = 0x000f; /...
TIM2_CCR3H=0;TIM2_CCR3L=0;TIM2_PSCR=0;TIM2_CR1|=0x01;} main(){ unsigned char i;PD...
剩下的问题就是单次延迟时间到了可以及时执行相应功能,那么就可以开启一个CC捕获比较中断。而延迟时间可以直接通过设置CCR比较捕获寄存器实现。比如当前定时器的计数值是1000,我们要实现10us的单次延迟,我们就可以直接设置CCR的数值为1000 + 10 =1010即可,等1010的计数值到了,就会触发CC捕获比较中断。
5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1) TIMx capture/compare register 1 偏移地址:0x34 复位值:0x0000 000 5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2) TIMx capture/compare register 2 偏移地址:0x38 复位值:0x0000 0000 5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3) ...
TIM2的PWM功能解析
CC2 CC3 CC4 同样公式类推 CC1的定时为1秒/146.48 = 0.0068秒= 6.8ms CC1 update rate = TIM2 counter clock / CCR1_Val = 146.48 Hz CC2 update rate = TIM2 counter clock / CCR2_Val = 219.7 Hz CC3 update rate = TIM2 counter clock / CCR3_Val = 439.4 Hz CC4 update rate = TIM2 ...
然后将DMA的数据传输到TIM1的PWM占空比寄存器(如CCR1、CCR2、CCR3等),从而实现PWM占空比的动态更新...
剩下的问题就是单次延迟时间到了可以及时执行相应功能,那么就可以开启一个CC捕获比较中断。而延迟时间可以直接通过设置CCR比较捕获寄存器实现。比如当前定时器的计数值是1000,我们要实现10us的单次延迟,我们就可以直接设置CCR的数值为1000 + 10 =1010即可,等1010的计数值到了,就会触发CC捕获比较中断。