基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现

基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现
软件:STM32cubemx/keil5
功能描述:将定时器TIM3全映射到外部端口PA6和PA7,设置输出模式为PWM(脉冲宽度调制模式)输出,通过改变占空比的值实现LED的呼吸灯效果。
需要配置的有:PA6设置为TIM3_CH1,PA7设置为TIM3_CH2,设置预分频系数与自动重载值,设置PWM的输出极性。

1.在STM32cubemx中新建new project,选择正确的MCU型号。建议选择Tx后缀,更直观。
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第1张图片
2.首先设置RCC的 HSE(外部高速时钟)为晶振模式Crystal/ceramic Resonator
在这里插入图片描述
SYS的Debug为Serial Wire
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第2张图片
3.设置TIME3,设置CH1,CH2的模式为PWM输出,PA6.PB7自动选择TIM3_CH1/2
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第3张图片
根据板子情况设置时钟树(此处外部晶振8M,STM32f107最高主频为72M)。
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第4张图片
4.知TIM3是挂在APB1总线上的,在时钟树上APB1总线的Timer频率是72M,在Configuration中配置TIM3参数,预分频系数设置为72-1,自动重载值设置为1000-1,那么PWM频率为72000000/72/1000=1000Hz,即1KHz,由于LED是低电平点亮,所以设置极性为low。占空比=(TIMx_CRRx/TIMx_ARR)*100%

基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第5张图片
预分频系数和自动重装值:
时钟频率为72MHz,即控制器每秒会计数72M次,预分频系数的作用是将频率分割;若设置为72-1,则频率分割为1MHz,即控制器每秒会计数1M次,意味着每1us计数1次。若要定时1ms,由于1ms=1us*1000,那么预装载值就是1000-1。要将两个值均减一的原因是控制器计数均从0开始。
5.在Project—setting中Toolchain/IDE选择所需要的编译软件,keil5或SW4STM32,勾选下图选项。
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第6张图片
保存之后,点击任务栏的代码生成图标“齿轮”。
6.完成之后点击Open Project,自动打开项目,在主程序main.c中,先定义一个16位变量dutycycle用于存储设置的占空比值
uint16_t dutyCycle = 0;
在这里插入图片描述
然后开启定时器TIM3的通道1/2 PWM Channel1/2输出PWM波。

  1. HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  2.  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
    

基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第7张图片
然后在while(1)中改变 dutycycle的值,即修改定时器3通道1/2的比较寄存器的值(占空比)。
while(dutycycle<1000)
{
dutycycle++; __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,dutycycle); __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,dutycycle); HAL_Delay(1);
}
while(dutycycle)
{
dutycycle–; __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,dutycycle); __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,dutycycle); HAL_Delay(1);
}
HAL_Delay(100);
}
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第8张图片
至此编译后无错,完成了通过STM32CubeMX调用HAL库实现PWM呼吸灯的效果程序。
7.程序下载,打开已安装好的J-link驱动J-Link Commander,打开所要下载的工程,先进行编译,然后配置软件。
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第9张图片
点击“魔法棒”,或project-options for target‘name’出现如下窗口。
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第10张图片
选择debug,如图选择use内容,因使用J-link故此处选择相应的选项,然后点击settings进行配置,设置为SW模式。

基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第11张图片
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第12张图片
8.设置Flash,点击flash download,进入如下界面然后勾选Rest and Run,点击Add添加所需型号
基于STM32cubemx的STMf107vct6的代码生成教程,实验三PWM呼吸灯的实现_第13张图片
9.点击Utilites,在settings中查看是否为SW模式,flash download与之前debug设置相同,之后点击ok完成设置,点击load下载程序。

你可能感兴趣的:(stm32cubemx,stm32f107,代码生成,PWM呼吸灯)