datasheet

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

2019-06-15来源: eefocus关键字:STM32CubeMX  PWM  呼吸灯

软件:


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中,先定义一个变量存储我们设置的占空比


  /* USER CODE BEGIN 1 */

uint16_t dutyCycle = 0;

  /* USER CODE END 1 */

然后使能TIM3的PWM Channel2 输出。


  /* USER CODE BEGIN 2 */

  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);

  /* USER CODE END 2 */

然后在while(1)中改变dutyCycle的值


 /* USER CODE BEGIN WHILE */

  while (1)

  {

  while (dutyCycle < 1000)

  {

  dutyCycle ++;

  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);

//   TIM3->CCR2 = dutyCycle;

  HAL_Delay(1);

  }

  while (dutyCycle)

  {

  dutyCycle --;

  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);

//   TIM3->CCR2 = dutyCycle;

  HAL_Delay(1);

  }

  HAL_Delay(200);

  /* 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);


是等效的。

关键字:STM32CubeMX  PWM  呼吸灯

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic464736.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32开发笔记19: STM32CubeMX中定时器的配置方法
下一篇:STM32串口USART用法的进阶(HAL库版本)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32CubeMX图形化配置软件使用

;                                                         2、BYPASS Clock Source(旁路时钟源),是指无需使用外部晶体时所需的芯片内部时钟驱动组件,犹如芯片内部的驱动组件被旁路了,也就是无需内部的驱动电路了,直接使用外部的时钟信号。3、Crystal/Ceramic
发表于 2019-07-19
STM32CubeMX图形化配置软件使用

STM32CubeMX+FreeRTOS实验---使用两个实例,共用一个task

, 0, 128);  LED2FlashHandle = osThreadCreate(osThread(LED2Flash), NULL);只是一个定义osThreadDef只是一个定义,把相关的内容绑在一起,不是函数。osThreadCreate才是一个函数。第二个参数就是*argument,对应StartLEDFlashTask函数的输入参数。因此在osThreadDef之前加入code。/*import user code,may be changed by stm32cubeMX*//*take attention */    uint16_t led1pin,led2pin
发表于 2019-07-18
STM32CubeMX+FreeRTOS实验---使用两个实例,共用一个task

STM32CubeMX学习笔记——FreeRTOS_任务挂起与继续

Githubhttps://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FreeRTOS/Class02_SuspendResume简介任务挂起与继续的作用,用于暂停运行某些任务与继续运行某些任务。就像用视频播放器看电影的播放按键与暂停按键一样简单。在STM32CubeMX上配置FreeRTOS非常的简单,几乎不需要做任何操作,只需要勾选移植FreeRTOS就成功了,关于在非Cube上的RTOS配置文件内的相关内容,也在下方的Configuration栏中给好了所有的配置都可以在这里完成任务创建有别于在没有使用Cube下的创建方式,在Cube
发表于 2019-07-18
STM32CubeMX学习笔记——FreeRTOS_任务挂起与继续

STM32F401利用CubeMX实现按键中断翻转LED

:/******************************************************************************//* STM32F4xx Peripheral Interrupt Handlers                                    *//* Add here the Interrupt Handlers for the used peripherals.                  *//* For the available
发表于 2019-07-18
STM32F401利用CubeMX实现按键中断翻转LED

STM32CubeMX学习笔记6:按键控制DMA串口发送

MCU:STM32F103ZET6IDE:  MDK-ARM V5 +STM32CubeMX5.0.0串口调试助手:SSCOM3.2功能描述:通过KEY_UP按键控制DMA串口1数据的传送。需要配置DMA,串口USART1,使能按键中断,LED提示灯。一. 在 Pinout&Configuration---System Core中:1. 首先设置时钟RCC的HSE(外部高速时钟)为晶振模式:Crystal/ceramic Resonator2. 设置系统SYS的Debug为Serial Wire:3. 设置GPIO中的LED管脚。在MCU管脚图中找到PC0和PC1管脚(查原理图对应的管脚号),将管脚设置
发表于 2019-07-18
STM32CubeMX学习笔记6:按键控制DMA串口发送

STM32CubeMX学习笔记5:ADC模数转换电压至串口输出

MCU:STM32F103ZET6IDE:  MDK-ARM V5 +STM32CubeMX5.0.0串口调试助手:SSCOM3.2功能描述:通过ADC1通道1采样外部电压值,将采样的AD值和转换后的电压值通过串口打印出来。需要配置的有USART1和ADC。一. 在 Pinout&Configuration---System Core中:1. 首先设置时钟RCC的HSE(外部高速时钟)为晶振模式:Crystal/ceramic Resonator2. 设置系统SYS的Debug为Serial Wire:二. 在 Pinout&Configuration---Analog和Connectivity中:1.
发表于 2019-07-18
STM32CubeMX学习笔记5:ADC模数转换电压至串口输出

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved