老河口网站建设,云网站 制作,wordpress博客防红跳转插件,中铁建设集团有限公司领导名单计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器#xff0c;顾名思义#xff0c;先预备一下分频#xff0c;有时候频率过高#xff0c;后面的定时器承受不住#xff0c;就先用PSC先分频一下。如何分频的#xff1f;将每接受到… 计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器顾名思义先预备一下分频有时候频率过高后面的定时器承受不住就先用PSC先分频一下。如何分频的将每接受到一次PSC就跳动一次当到了PSC的设置值的时候再传递到下一个定时器。而PSC的范围计算是从0开始的所以定时器时钟频率应该为Fosc/(PSC 1)。有点类似C的数组a[3]是a[0],a[1],a[2]但是psc[3]是psc[0],psc[1],psc[2],psc[3]。所以PSC要1。 举个例子STM32F10x的总线时钟最大为是72MHz如果此时我们想要一个1ms的中断不去分频的话1/72us不好计算如果我们进行分频711那么此时分频后频率为1MHz周期就是1us再进行1000个机器周期就得到我们想要的1ms。 定时器初始化结构体详解
typedef struct
{uint16_t TIM_Prescaler; // 预分频器uint16_t TIM_CounterMode; // 计数模式uint32_t TIM_Period; // 定时器周期uint16_t TIM_ClockDivision; // 时钟分频uint8_t TIM_RepetitionCounter; // 重复计算器
} TIM_TimeBaseInitTypeDef;
TIM_Prescaler:设置预分频器TIM_CounterMode:设置定时器计数模式有向上计数向下计数以及三种中心对齐模式基本定时器只能是向上计数即 TIMx_CNT只能从 0开始递增并且无需初始化。TIM_Period:定时器周期自动重载寄存器,实际就是设定自动重载寄存器的值在事件生成时更新到影子寄存器。可设置范围为 0至 65535。 TIM_ClockDivision:时钟分频设置定时器时钟 CK_INT 频率与数字滤波器采样时钟频率分频比基本定时器没有此功能不用设置。TIM_RepetitionCounter: 重复计数器属于高级控制寄存器专用寄存器位利用它可以非常容易控制输出 PWM 的个数。 使用定时器之前必须开启定时器时钟基本定时器属于 APB1总线外设。APB1总线外设时钟72MHz。设置自动重装载寄存器 arr 的值为9999设置时钟预分频器寄存器psc的值为7199则驱动计数器的时钟CK_CNT APB1Periph/ (71991)72MHz/720010KHz计数器计数一次的时间等于1/CK_CNT0.0001s当计数器从0计数到9999时产生一次中断则中断一次的时间为0.0001*100001s。
void TIM2_Configuration(){//初始化结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//1.分配时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//2.初始化定时器相关配置TIM_TimeBaseStructure.TIM_Period 7199;TIM_TimeBaseStructure.TIM_Prescaler 9999;/*一般设置为TIM_CKD_DIV1,不分频*/TIM_TimeBaseStructure.TIM_ClockDivision TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; //向上计数TIM_TimeBaseInit(TIM2,TIM_TimeBaseStructure);//3.打开定时器TIM_Cmd(TIM2,ENABLE);
}