
定时器PWM波实验 实验说明 芯片:STM32F103RCT6 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度。 实验操作 1、基础配置 1)sys中,选好调试方式,例如jtag-4pin。 2)RCC时钟,晶振选择。 3)时钟树配置。 4)中断分组配置。 以上步骤可以参考之前的实验。 2、外设配置—PWM波配置 本次实验使用的是TIM2的通道1来输出PWM波。 1) 如下图打开TIM2功能配置视图。 ![]() 2)选择时钟,并且选择通道1的PWM模式。 ![]() ![]() 注意载芯片示意图上 会看到下图 PA0 就是TIM2 的通道1 PWM波输出口。 ![]() 3)配置PWM波的参数 ![]() 上图中需要理解两个点, PWM 的频率 : ![]() PWM模式和极性: PWM模式1,在向上计数时,一旦TIMx_CNT < TIMx_CCR1(就是上图中的6,计数比较值)。时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 PWM模式2- 在向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平 输出比较极性的指的是你在比较匹配之后输出口输出的极性。 这个函数就是让你设置有效极性,也就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。如果设置为高电平有效,那么当定时器比较匹配之后,输出口输出高电平,否则就反一下。 这里我自己的理解是,如果是PWM模式1,且向上计数,如果极性设置为低,那么 TIMx_CNT < TIMx_CCR1 时,输出低电平,更简单就是占空比为1 – TIMx_CCR1/(ARR+1). 如果极性为高,占空比就是TIMx_CCR1/(ARR+1)、 3 生成代码 由于这里不用中断,所以不用配置中断优先级。所以写好工程的名字和路径后,直接生成代码即可。 4 在工程中开启PWM 在完成以上设置之后,我们需要使能 TIM2 并且使能 TIM2_CH1 输出。在 HAL 库中,函数 HAL_TIM_PWM_Start 可以用来实现这两个功能,函数声明如下:
该函数第二个入口参数 Channel 是用来设置要使能的通道号。 ![]() 5 修改占空比 推荐使用寄存器的方式
6 测试 下载程序,然后可以使用万用表测试PA0口的电压值,为0.54~0.55V ![]() (PWM模式1,极性为高 所以占空比为 150/900 * 3.3 为0.55V。 |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化