STMCU小助手
发布时间:2022-2-8 21:49
|
STM32除TIM6和TIM7外都可以产生PWM输出。高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出。 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟,配置PA8为复用输出 APB2外设时钟使能寄存器(RCC_APB2ENR)
![]() APB1外设复位寄存器 (RCC_APB1RSTR)
![]() 置1开启。清0关闭。 Eg:RCC->APB2ENR|=1<<11; //使能TIM1时钟 Eg:GPIOA->CRH&=0XFFFFFFF0; //PA8清除之前的设置 GPIOA->CRH|=0X0000000B; //PA8复用功能输出 ②设置TIM1的ARR和PSC 自动重装载寄存器(TIMx_ARR)
![]() TIM1和TIM8预分频器(TIMx_PSC)
![]() ③设置TIM1_CH1的PWM模式及通道方向 TIM1和TIM8捕获/比较模式寄存器1(TIMx_CCMR1)
![]() 输出比较模式 ![]() ![]() ![]()
Eg:TIM1->CCMR1|= 7<<4; //CH1 PWM2模式 TIM1->CCMR1|= 1<<3; //CH1预装载使能 CH1为输出,CC1S[1:0] 默认为00. ④使能TIM1的CH1输出,使能TIM1 设置TIM1_CCER来开启TIM1的通道1的输出。设置TIM1_CR1来开启TIM1的时钟。 TIM1和TIM8捕获/比较使能寄存器(TIMx_CCER)
![]() ![]() ![]() Eg:TIM1->CCER|= 1<<3; //OC1输出使能 TIM1和TIM8控制寄存器1(TIMx_CR1)
![]() ARPE:自动重装载预装载允许位 0:TIMx_ARR寄存器没有缓冲; 1:TIMx_ARR寄存器被装入缓冲器。 CEN:使能计数器 位0 0:禁止计数器; 1:使能计数器。 Eg:TIM1->CR1=0x0080; //ARPE使能 TIM1->CR1|=0X01; //使能定时器1 ⑤设置MOE输出,使能PWM输出 普通定时器在完成以上设置后可以输出PWM,但高级定时器要使能刹车和死区寄存器。 TIM1和TIM8刹车和死区寄存器(TIMx_BDTR)
![]() Eg:TIM1->BDTR|=1<<15; //MOE主输出使能 ⑥修改TIM1_CCR1来控制占空比 Eg:#define PWM_VAL TIM1->CCR1 (可以直接设置) 2.TIMx复用功能重印象
![]() ![]() ……3.高级定时器TIM1输出PWM应用
4.普通定时器TIM2输出2路PWM 应用
5.普通定时器TIM3输出2路PWM 应用
切记在主函数前添加输出化函数! Eg:TIM2_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz |
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
STM32G0 系列 I2C 通信异常典型案例分析与解决方案总结
经验分享 | LAT1490 两个STM32G0 I2C 通信异常的案例分析
经验分享 | STM32G0 I2C bootloader Go 命令后调试连接失败:DBG_SWEN 位复位修复
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
微信公众号
手机版