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

【STM32U545评测】从零创建呼吸灯

[复制链接]
lugl 发布时间:2023-11-11 16:43

1、安装stm32cubdIDE(教程官网有,略过)

2、新建stm32Project工程

image.png

3、输入工程名称

image.png

生成工程后,如下图所示:

image.png

4、打开时钟配置界面,修改时钟主频为160M。

image.png

5、选择工程管理,生成以单个生成工程文件:

image.png

6、按ALT+K生成工程文件。

7、打开main.c,在下面的程序中输入板载LED灯的闪灯代码:

image.png

注:在stm32cubeide中自动生成了板载led灯的宏定义代码:

image.png

并在gpio.c中初始化了板载的LED灯。

image.png

6、编译,下载,第一次按运行,会弹出升级st-link的对话框,按下面操作:

image.png

7、下载好后,我们就可以看到板载的LED灯在闪烁了。

【创建呼吸灯】

呼吸灯,我们是利用pwm输出,并且修改他的占空比来实现动态实现灯的亮度。

1、IO选择,经查看开发板的原理图,我们得知板载的LED2是由PA5来连接的

image.png

2、打开图形配置工具,我们修改PA5为定时器输出:

image.png

3、打开TIM2的配置界面:

image.png

我们配置分频系数为1600-1,重载值为2000,所以经频率计算,PWM输出频率为50Hz。配置好后生成工程。

4、在主程序中,我们先使能TIM2通道1开始输出。

5、HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);

6、在主循环中编写呼吸灯代码,主要的思路就是修改点空比,到达100%后再减,往复形成呼吸灯效果:

  /* USER CODE BEGIN 2 */
  int pwmVal = 0;
  uint8_t F = 0;
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      if(F == 0)
         {
             pwmVal += 10;
             if(pwmVal == 2000)
             {
                 F = 1;
             }
         }
         else
         {
             pwmVal -= 10;
             if(pwmVal == 0)
             {
                 F = 0;
             }
         }
         __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比

         HAL_Delay(10);
  }

【总结】stm32cubeIde支持对开发板的开发非常好,默认的一些外设都是可以通过模板来设置好,自己添加少量的代码就可以实现自己的逻辑。

收藏 评论1 发布时间:2023-11-11 16:43

举报

1个回答
攻城狮Melo 回答时间:2023-12-11 18:01:53
这个写的很详细,感谢大佬
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版