当前位置:   article > 正文

STM32CubeMX学习教程之五:PWM实现呼吸灯效果_stm32cubemx新建工程文件为啥提示proxy error

stm32cubemx新建工程文件为啥提示proxy error

完整源码下载:

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型号

 

首先设置RCC和SYS,如下图

 

然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图

 

 

 

设置PC7 管脚为TIM3_CH2, 即定时器TIM3的Channel2

然后设置TIM3的Channel2为PWM Generation CH2

 

上一篇博文我们知道TIM3是挂在APB1总线上的,看时钟树我们知道APB1总线的Timer频率是72MHz。

配置TIM3参数,预分频系数设置为72-1, 自动重载值设置为1000-1,那么PWM频率为72,000,000/72/1000=1000Hz,即1KHz。由于LED是低电平点亮,所以我们把极性设置为low。

 

 

Project - setting ,ToolChain/IDE选择 SW4STM32

勾选这里

保存以后,点击任务栏的生成代码图标

生成完毕以后在弹出的对话框点击"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。

然后任务栏上点击Run图,当然会报错的,原因请查看另一篇我的博客(https://blog.csdn.net/toopoo/article/details/79680323),所以需要右键点击  项目名Run.cfg ,给它改个名字,

 

然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Main-C/C++Application那里点击“Search Project”,然后选择出现的默认的elf文件:

然后在Debugger-User Defined-Browse 那里选择你自己改名的配置文件:

然后右键点击那个新的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);

是等效的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/75966
推荐阅读
相关标签
  

闽ICP备14008679号