如果没有开始的勇气,何来疯狂的过程,又怎知终点的模样?
1、任务计划
(1)看PWM输出的教学视频;
(2)进行PWM的练习编程。
(3)开始编写第二个课题的工程。可以写不完,但是要先找到思路和方向。
2、计划完成度
(1)教学视频看了一部分。PWM输出实验视频分为3部分来讲的,一是通用定时器PWM概述,二是常用寄存器和库函数配置,三是编写PWM输出实验。
第一部分通用定时器的概述。主要从以下几个方面描述的。
[1]STM32的PWM工作过程。
我们知道PWM是脉冲宽度调制,从这张图上,我们可以知道,PWM是由TIMx_ARR来确定频率,TIMx_CCRx来确定占空比的。
[2]在这里引来几个新的概念。
*CCRx:捕获比较(值)寄存器,可以设置比较值。
*CCMRx:OCxM[2:0]位,可以设置PWM模式1(110)、PWM模式2(111)。至于PWM模式1和PWM模式2嘛~
PWM模式1:向上或向下计数时,TIMx_CNT<TIMx_CCRx有效,否则无效;
PWM模式2:向上或向下计数时,TIMx_CNT>TIMx_CCRx有效,否则无效;
*CCER:CCxP位:输入/捕获x输出极性。0:高电平有效,1:低电平有效。
*CCER:CCxP位:输入/捕获x输出使能。0:关闭,1:打开。
[3]自动重载的预装载寄存器
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
ARPE=1,ARR立即生效;APRE=0,ARR下个比较周期生效。(暂时还不明白这句话)
[4]如果找TIMx的输出通道引脚的话,在资料的搜索栏直接查找“TIMx”即可。
注意:通用定时器9-14,有的有2个通道,有的只有一个。
第二部分是讲的PWM输出库函数。
[1]PWM输出库函数。
voidTIM_OCxInit(TIM_TypeDef*TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
在这里可以初始化控制PWM的每个OC门的变量。
[2]设置比较值
voidTIM_SetCompareX(TIM_TypeDef*TIMx,uint16_t Comparex);
[3]使能输出比较预装载
void TIM_OCxPreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
[4]使能自动重装载的预装载寄存器允许位
voidTIM_ARRPreloadConfig(TIM_TypeDef*TIMx, FunctionalStateNewState);