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

STM32CubeMX配置定时器实现1KHz的PWM输出

[复制链接]
STMCU 发布时间:2020-10-16 15:13
STM32CubeMX配置定时器实现1KHz的PWM输出


一、STM32CubeMX
STM32CubeMX是ST公司推出的自动创建工程及初始化代码的工具,适用于旗下所有STM32系列产品。此软件需要安装JAVA运行环境。


二、TIM定时器
从参考手册可知STM32的定时器除了基本定时器(TIM6、TIM7)外,其他的都可以产生PWM输出,我们以TIM2定时器的CHANNEL2为例,输出1Khz的方波。

11.png

从定时器图框中可以看出主要相关部分是计数器时钟的选择、时基单元以及PWM输出。
12.png
在PWM输出模式下,当CNT(计数器当前值)小于CCRx(捕获/比较寄存器值)时,TIMx_CHx通道输出低电平;当CNT(计数器当前值)大于等于CCRx(捕获/比较寄存器值)时,TIMx_CHx通道输出高电平;因此,可以通过设置TIMx_ARR(自动重装值)确定周期、TIMx_CCRx寄存器设置占空比来调出固定的PWM波。
13.png

参考手册里这一块大概就是说,PWM计数模式分为向上计数和向下计数模式,当TIMx_CNT<TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为’1’。如果比较值为0,则OCxREF保持为’0’;在PWM模式1,当TIMx_CNT>TIMx_CCRx时参考信号OCxREF为低,否则为高。如果TIMx_CCRx中的比较值大于TIMx_ARR中的自动重装载值,则OCxREF保持为’1’。该模式下不能产生0%的PWM波形;当TIMx_CR1寄存器中的CMS位不为’00’时,为中央对齐模式(所有其他的配置对OCxREF/OCx信号都有相同的作用)。根据不同的CMS位设置,比较标志可以在计数器向上计数时被置’1’、在计数器向下计数时被置’1’、或在计数器向上和向下计数时被置’1’。TIMx_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。
14.png
捕获/比较模式寄存器由TIMx_CCMR1和TIMx_CCMR2组成。TIMx_CCMR1控制CH1和CH2,TIMx_CCMR2控制CH3和CH4。该寄存器的某些位在不同模式下功能不一样,上面一层对应输出而下面一层对应输入。其中模式设置OCxM位,此位由3位组成,一共可以配置成7种模式,我们使用的是PWM模式,所以这三位必须为110/111。其作用在PWM输出模式下,确定PWM的模式、使能相应的预装载寄存器等操作。
15.png
16.png

Bit1和Bit0在PWM输出模式下,确定PWM的的输出极性和输出使能。
17.png

TIMx_CCR1寄存器确定PWM输出模式下比较的值。

三、STM32CubxMX配置
使用定时器PWM功能,选择TIM2 CLock Source为Internal Clock,通道2选择PWM Generation CH2。

18.png
参数配置如图
19.png
然后时钟源等配置不做过多说明,可以参见工程代码中的配置情况,点击生成代码,使用Keil打开。


四、代码修改
Keil5打开工程代码后,添加调用HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2)函数,定义变量uint16_t dutyCycle = 0,然后while循环函数如下:
  1. while (1)
  2.   {
  3.     /* USER CODE END WHILE */

  4.     /* USER CODE BEGIN 3 */
  5.     while(dutyCycle < 1000)
  6.     {
  7.       dutyCycle++;
  8.       __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, dutyCycle);
  9.       HAL_Delay(1);
  10.     }
  11.     while(dutyCycle)
  12.     {
  13.       dutyCycle--;
  14.       __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, dutyCycle);
  15.       HAL_Delay(1);
  16.     }
  17.   }
复制代码


编译下载,使用示波器捕获即可看到1Khz的方波。

收藏 3 评论1 发布时间:2020-10-16 15:13

举报

1个回答
liushiming82 回答时间:2020-10-19 10:24:32
非常好,应该多分享一点这方面的知识,最好从最基础到 USB NTFS 操作系统等

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

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