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

基于STM32CUBEME的PWM经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-16 16:42
概述
    本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸灯效果。

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

微信图片_20230416152613.jpg

选择芯片型号
       使用STM32CUBEMX选择芯片stm32f030r8,如下所示:

微信图片_20230416152609.png

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

微信图片_20230416152606.png

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

微信图片_20230416152559.png

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

微信图片_20230416152556.png

    配置PWM波的参数

微信图片_20230416152553.png

    PWM频率计算如下所示

微信图片_20230416152548.png

    在上面配置TIM3参数,预分频系数设置为48-1, 自动重载值设置为1000-1,那么PWM频率为48,000,000/((48-1+1)*(1000-1+1))=1000Hz,即1KHz。
    注意载芯片示意图上会看到下图PA6就是TIM3的通道1PWM波输出口。

微信图片_20230416152534.png

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

微信图片_20230416152531.png

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

微信图片_20230416152527.png

生成代码
微信图片_20230416152524.png

配置keil
微信图片_20230416152521.png

微信图片_20230416152518.png


    在main.c中,先定义两个变量存储设置的占空比和模式
  1.   /* USER CODE BEGIN 1 */

  2.         uint16_t pwm_i =0;//占空比

  3.         uint16_t pwm_mode =0;//呼吸灯模式,1为增加,2为减少

  4.   /* USER CODE END 1 */
复制代码

    使能TIM3的PWM Channel4 输出。
  1.   /* USER CODE BEGIN 2 */

  2.     //使能TIM3的PWM Channel1输出。

  3.     HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

  4.   /* USER CODE END 2 */
复制代码

    然后在while(1)中改变pwm_i的值,来实现呼吸效果
  1.   /* USER CODE BEGIN WHILE */

  2.   while (1)

  3.   {

  4.                 if(pwm_mode)

  5.                 {

  6.                         __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm_i--);

  7.                         if(pwm_i==0)

  8.                                 pwm_mode=0;

  9.                 }

  10.                 else

  11.                 {

  12.                         __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm_i++);

  13.                         if(pwm_i==1000)

  14.                         pwm_mode=1;

  15.                 }

  16.                 HAL_Delay(1);               

  17.     /* USER CODE END WHILE */

  18.     /* USER CODE BEGIN 3 */

  19.   }

  20.   /* USER CODE END 3 */
复制代码

演示效果



微信图片_20230416152514.gif


转载自:记帖
如有侵权请联系删除






收藏 评论0 发布时间:2023-4-16 16:42

举报

0个回答

所属标签

相似分享

官网相关资源

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