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

【经验分享】STM32使用HAL库实现定时器PWM输出

[复制链接]
STMCU小助手 发布时间:2022-4-12 10:00
环境:
1、STM32CubeMX 5.3
2、Atollic TrueSTUDIO for STM32 9.3.0
3、战舰迷你板(stm32f103rb)


本章效果为LED灯由PWM控制,由暗到亮,再由亮到暗,反复循环。

(一)配置LED灯引脚为输入模式

B(BO2O@88{((L{R6IA]IB19.png

(二)配置定时器

频率的计算方法:

20191101150912581.jpg

定时器配置频率为10KHZ,所以ARR=99,PSC=71,占空比范围就是ARR的范围:0-100,100就是全为高:


20191101194633708.png

初始化定时器后要使能PWM输出:
  1. HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
复制代码

改变捕获比较值,也就是改变占空比:

  1. __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, val);
复制代码

正点原子mini板的PA8是led灯,定时器3的PWM输出通道2是PA7,所以在板子上用跳线帽将PA8和PA7连接起来即可:

  1. int main(void)
  2. {
  3.         uint8_t mode = 1;
  4.         uint32_t led0pwmval = 0;
  5.         int i = 0;

  6.         HAL_Init();
  7.         SystemClock_Config();

  8.         MX_GPIO_Init();
  9.         MX_TIM3_Init();
  10.         MX_USART1_UART_Init();
  11.         HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);                // 使能PWM输出

  12.         while (1)
  13.         {
  14.                 if (mode)
  15.                         led0pwmval++;
  16.                 else
  17.                         led0pwmval--;

  18.                 if (led0pwmval >= 100)
  19.                         mode = 0;
  20.                 if (led0pwmval == 0)
  21.                         mode = 1;

  22.                 __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, led0pwmval);                // 改变占空比
  23.                 HAL_Delay(10);

  24.                 i++;
  25.                 if (i >= 100)
  26.                 {
  27.                         i = 0;
  28.                         HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
  29.                 }
  30.         }
  31. }
复制代码

收藏 评论0 发布时间:2022-4-12 10:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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