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

STM32CubeMX学习教程:PWM实现呼吸灯效果

[复制链接]
STMCU-管管 发布时间:2021-5-28 16:40
完整源码下载:
https://github.com/simonliu009/STM32CubeMX-PWM-Output


软件:
STM32CubeMX V4.25.0  
System Workbench V2.4


固件库版本:
STM32Cube FW_F1 V1.6.1


硬件:
OneNet 麒麟座V2.3


在STM32CubeMX中新建项目,选择正确的MCU型号
1.png
首先设置RCC和SYS,如下图
2.png
然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图
3.png
设置PC7 管脚为TIM3_CH2, 即定时器TIM3的Channel2
4.png
然后设置TIM3的Channel2为PWM Generation CH2
5.png
我们知道TIM3是挂在APB1总线上的,看时钟树我们知道APB1总线的Timer频率是72MHz。
6.png
配置TIM3参数,预分频系数设置为72-1, 自动重载值设置为1000-1,那么PWM频率为72,000,000/72/1000=1000Hz,即1KHz。由于LED是低电平点亮,所以我们把极性设置为low。
7.png
Project - setting ,ToolChain/IDE选择 SW4STM32
8.png
勾选这里
9.png
保存以后,点击任务栏的生成代码图标
10.png
生成完毕以后在弹出的对话框点击"Open Project", System Workbench自动打开Eclipse并导入和打开了项目。


在main.c中,先定义一个变量存储我们设置的占空比
  1.   /* USER CODE BEGIN 1 */
  2. uint16_t dutyCycle = 0;
  3.   /* USER CODE END 1 */
复制代码
然后使能TIM3的PWM Channel2 输出。
  1. /* USER CODE BEGIN 2 */
  2.   HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  3.   /* USER CODE END 2 */
复制代码
然后在while(1)中改变dutyCycle的值
  1. /* USER CODE BEGIN WHILE */
  2.   while (1)
  3.   {
  4.           while (dutyCycle < 1000)
  5.           {
  6.                   dutyCycle ++;
  7.                   __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
  8. //                  TIM3->CCR2 = dutyCycle;
  9.                   HAL_Delay(1);
  10.           }
  11.           while (dutyCycle)
  12.           {
  13.                   dutyCycle --;
  14.                   __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
  15. //                  TIM3->CCR2 = dutyCycle;
  16.                   HAL_Delay(1);
  17.           }
  18.           HAL_Delay(200);
  19.   /* USER CODE END WHILE */
复制代码
然后右键点击项目,选择Properties, Run-Debug Settings, 点击右侧的New,在弹出对话框中选择Ac6 STM32 Debugging。
11.png
然后任务栏上点击Run图,当然会报错的,所以需要右键点击  项目名Run.cfg ,给它改个名字,
12.png
然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Main-C/C++Application那里点击“Search Project”,然后选择出现的默认的elf文件:
13.png
然后在Debugger-User Defined-Browse 那里选择你自己改名的配置文件:
14.png
然后右键点击那个新的cfg文件,选择"Open With - Text Editor", 进行如下更改:


source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]
reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none


然后再Run一下,就可以了。
程序实现了呼吸灯效果。


注意


TIM3->CCR2 = dutyCycle__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);


是等效的。


收藏 评论0 发布时间:2021-5-28 16:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

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