你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32Cube 使用定时器产生PWM输出

[复制链接]
STMCU小助手 发布时间:2022-4-25 21:24
7.4 使用定时器产生PWM输出
7.4.1 配置PWM输出通道

返回到引脚配置系统中,这次我们选用TIM3作为PWM的产生定时器,在“TIM3”界面将“Clock Source”设为“Internal Clock”内部时钟,再将通道4设为“PWM Genration CH4”。
选用定时器3通道4的原因是它与开发板LED相连,方便查看PWM情况。

A%(}DCX`V$Q5Z~2DWX~_GH2.png

接着进入TIM3的配置设置中(没显示出来的注意去刷新系统时钟)

Y]90]1L0{KKSV{P}6$C}6.png

将系统分频设为480,得到1KHZ频率,将计数设为1000得到1000us的PWM周期。
频率 = 定时器时钟 / (Prescaler 预分频 + 1) / (Counter Period 计数值 + 1) Hz
占空比 = Pulse ( 对比值) / (C ounter Period 计数值) %
同时开启自动重载防止定时器溢出。点击保存并生成代码。
7.4.2 PWM输出开启
在“NVIC.c”中,为中断函数初始化分别添加定时器3开启以及PWM占空比的代码即可。

83d250976efa4737a8e9ea7e110b7e17.png

由于开发板是串联红色LED接电源的方式连接,高电平时电流不导通LED为灭,又因为红色LED发出的光强较强,因此需要高占空比才能用肉眼看出差距。因此这里将“HAL_TIM_SET_CMPARE”值设为990,相较于1000的计数值占空比即为99%,使得大部分时间IO口输出为高电平。
实际效果:

CNF3LK)EXQUFB)STJSUQO1N.png

附上程序:

  1. /** Configure pins
  2.      PB0   ------> IO_LED0_Pin
  3.      PB1   ------> &htim3,TIM_CHANNEL_4
  4. */
  5. #include "NVIC.h"
  6. void NVIC_Init(){
  7.         HAL_TIM_Base_Start_IT(&htim1);                        //HAL库开启定时器1
  8.         HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);//HAL库开启定时器3,并使用通道4输出PWM
  9.         __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, 990);//HAL库修改占空比至99%

  10. }
  11. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {        //中断回调函数
  12. if (htim->Instance == htim1.Instance) {                                        //判断是哪个定时器产生中断
  13.         HAL_GPIO_TogglePin(IO_LED0_GPIO_Port, IO_LED0_Pin);        //HAL库控制IO_LED0电**转
  14. }
  15. }
复制代码






收藏 评论0 发布时间:2022-4-25 21:24

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版