如果没有开始的勇气,何来疯狂的过程,又怎知终点的模样?

1、任务计划

    (1)看PWM输出的教学视频;
    (2)进行PWM的练习编程。
    (3)开始编写第二个课题的工程。可以写不完,但是要先找到思路和方向。

2、计划完成度

    (1)教学视频看了一部分。PWM输出实验视频分为3部分来讲的,一是通用定时器PWM概述,二是常用寄存器和库函数配置,三是编写PWM输出实验。
     第一部分通用定时器的概述。主要从以下几个方面描述的。
    [1]STM32的PWM工作过程。
1.25学习计划
    我们知道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);

    

相关文章:

  • 2022-01-12
猜你喜欢
  • 2021-12-05
相关资源
相似解决方案