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

【经验分享】STM32CUBEMX--PWM

[复制链接]
STMCU小助手 发布时间:2022-5-1 17:49
概述
本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸灯效果。

硬件准备
首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板:

6`L`H%GRNFNH3DN8L6H{XO5.png

选择芯片型号

7]2KAEKFX%S4(YKG5J878DB.png

配置时钟源
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:

]DN37KL$K%IZ%`E_WU[NK%9.png

配置时钟树
STM32F0的最高主频到48M,所以配置48即可:

TSLLUDNWNKU4Q9UJSF327GH.png

PWM配置
本次实验使用的是TIM3的通道1来输出PWM波,选择时钟,并且选择通道1的PWM模式。

ZDT]J9RDOS(J888TZZXH)}4.png

配置PWM波的参数

HH_RXCOYE$E]T850}Q2{P.png

PWM频率计算如下所示

61%LH[T1`[CZ4DW[D((A]B5.png

在上面配置TIM3参数,预分频系数设置为48-1, 自动重载值设置为1000-1,那么PWM频率为48,000,000/((48-1+1)*(1000-1+1))=1000Hz,即1KHz。

注意载芯片示意图上会看到下图PA6就是TIM3的通道1PWM波输出口。

%WF({VRZ9XN[(A3R]KPQ4{4.png

生成工程设置
注意在生产工程设置中不能出现中文,不然会报错。

VVIR3_<Y3RK[NV4IX~[5E.png


代码生成设置
最后设置生成独立的初始化文件:

33@9IQIBGI~}PAO~1YEM5.png

生成代码

0ZMZCXZL(3]2K65N)ZY%VLU.png


配置keil

$Y(S4]V@]HSA_NXB{}59FEI.png

代码
在main.c中,先定义两个变量存储设置的占空比和模式

  1. <p>  /* USER CODE BEGIN 1 */</p><p>uint16_t pwm_i =0;//占空比</p><p>uint16_t pwm_mode =0;//呼吸灯模式,1为增加,2为减少</p><p>  /* USER CODE END 1 */</p>
复制代码

使能TIM3的PWM Channel1 输出。
  1. <p>  /* USER CODE BEGIN 2 */</p><p>    //使能TIM3的PWM Channel1输出。</p><p>    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);</p><p>  /* USER CODE END 2 */</p>
复制代码

然后在while(1)中改变pwm_i的值,来实现呼吸效果。

  1. <p></p><p> </p><p>  /* USER CODE BEGIN WHILE */</p><p>  while (1)</p><p>  {</p><p><span style="white-space:pre">        </span>if(pwm_mode)</p><p><span style="white-space:pre">        </span>{</p><p><span style="white-space:pre">                </span>__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm_i--);</p><p><span style="white-space:pre">                </span>if(pwm_i==0)</p><p><span style="white-space:pre">                </span>pwm_mode=0;</p><p><span style="white-space:pre">        </span>}</p><p><span style="white-space:pre">        </span>else</p><p><span style="white-space:pre">        </span>{</p><p><span style="white-space:pre">                </span>__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm_i++);</p><p><span style="white-space:pre">                </span>if(pwm_i==1000)</p><p><span style="white-space:pre">                </span>pwm_mode=1;</p><p><span style="white-space:pre">        </span>}</p><p><span style="white-space:pre">        </span>HAL_Delay(1);<span style="white-space:pre">                </span></p><p>
  2. </p><p>    /* USER CODE END WHILE */</p><p>    /* USER CODE BEGIN 3 */</p><p>  }</p><p>  /* USER CODE END 3 */</p><p></p>
复制代码

演示效果

20200604142957273.gif


收藏 评论0 发布时间:2022-5-1 17:49

举报

0个回答

所属标签

相似技术帖

官网相关资源

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