;/*20ms和2.5ms之所以此处有刚好X整数倍关系,,不一定是us和ms的整数转换倍数关系的原因是
因为TIM14_PWM_Init(20000-1,84-1)中输入时钟频率84MHz和分频系数(84-1+1)除后为一个10KHz正是因为这个10KHz导致了定时器计数加一所耗费的时间为(1/10K)秒,,然后ARR中的值可以理解为多少个定时器加一的时间,如此这般相乘便是PWM的一个周期的时间也即为定时器溢出一次的时间,,,至于占空比设置所用的函数TIM_SetCompare1进入函数实现可以知道
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1)
{
// Check the parameters
assert_param(IS_TIM_LIST1_PERIPH(TIMx));
// Set the Capture Compare1 Register value
TIMx->CCR1 = Compare1;
}
它是把他的参数传给TIMx->CCR1 寄存器,由正点原子书上的PWM原理示意图可以知道CCRx决定占空比,,个人把这里理解为和ARR为类比的一个级别的类似值,,也就是把CCRx的值拿去乘定时器计数加一所耗费的时间为(1/10K)秒,,所以如此便决定了PWM的转折点
*/
程序如下
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include