今天学习的是通用定时器的比较输出功能,也就是PWM;从它的工作过程图中很容易看出,就是计数器与比较值CCRx作比较,可以产生对应的IO口逻辑。而具体的对应关系需要对相应的寄存器进行配置。1)首先是选择工作模式,即对CCMR1的OC1M[2:0]配置,模式1是计数器小于比较值为有效电平,模式2是计数器大于比较值为有效电平。2)其次配置输出极性,0为高电平有效,1为低电平有效。3)使能比较输出。
在频率确定的情况下(上一节课有提到,通过预分频系数来设定),PWM的周期是由ARR自动重装载确定,占空比是由CCRx确定,通过对这两个参数的修改,就可以得到我们想要的脉冲波。
根据下面的步骤就可以输出PWM,因为使用的是PB5端口,所以需要开启TIM3的部分重映射。下面的程序可以产生LED灯亮度不断变化的效果,实际上就是呼吸灯。
之前大学的毕业设计做的是智能家居的控制,在模拟调节窗帘和调节灯亮度的功能,用的也是PWM。