STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记

         想学一下定时器,然后在查阅资料的时候,发现定时器的功能很强大,所以通过学习一个实例来验证一下,本次是通过定时器的PWM功能实现呼吸灯。

实验的硬件平台是STM32F103ZET6,软件是MDK5,STM32CUBEMX.

       在学习cubemx之后发现这个软件是真的强大。

首先勾选引脚,在RCC的HSE选择Crystal/Ceramic Resonator

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第1张图片

勾选SYS,然后DEBUG选择Serial Wire

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第2张图片

完了之后选择TIM3,在通道2选择PWM Generation CH2

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第3张图片

因为此次实验是要控制呼吸灯,所以找到相应的LED灯的使能引脚,在我这个板中是PB5,选择的是TIM3_CH2,STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第4张图片

然后再配置系统时钟,这里选择是外部输入,因为TIM3是挂在ABP1上的,因此这里选择的72MHZ的输入时钟

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第5张图片

通过预分频可以得到APB1 TIMER CLOSKS得到的时钟频率是72MHZ,系统TIMx_CNT=72MHZ,设置TIMx_PSC=72-1,则PWM的频率为72M/72/1000=1000,则Count Perior =1000-1,占空比在程序中调整,即TIM3的参数设置为

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第6张图片

其中因为LED是低电平有效,因此在CH Polarity上设置为LOW,即低电平有效,然后选择相应的编译器,并勾选生成相应的文件,变成生成工程了

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第7张图片

下面是程序

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第8张图片

首先先打开PWM功能,因为在此实验中采用的是向上计数,因此在mian函数里面定义uint16_t i=0;

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第9张图片

在循环里加以上程序,其中i的计数值就是占空比的大小,若要控制呼吸灯的时间,便可通过调整这个计数值来改变占空比,在库文件中关于__HAL_TIM_SET_COMPARE的定义,这里计数的大小是灯亮的时间

#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
(*(__IO uint32_t *)(&((__HANDLE__)->Instance->CCR1) + ((__CHANNEL__) >> 2U)) = (__COMPARE__))

/**
  * @brief  Gets the TIM Capture Compare Register value on runtime
  * @param  __HANDLE__: TIM handle.
  * @param  __CHANNEL__ : TIM Channel associated with the capture compare register
  *          This parameter can be one of the following values:
  *            @arg TIM_CHANNEL_1: get capture/compare 1 register value
  *            @arg TIM_CHANNEL_2: get capture/compare 2 register value
  *            @arg TIM_CHANNEL_3: get capture/compare 3 register value
  *            @arg TIM_CHANNEL_4: get capture/compare 4 register value
  * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
  */

   然后接下来就是对程序进行编译

STM32CUBEMX创建工程使用PWM控制LED呼吸灯——学习笔记_第10张图片

 

编译成功,可以正常控制LED呼吸灯的闪烁。

   

 

                                                                                                   ——————2019年4月21日晚

你可能感兴趣的:(初学)