标签:ack settings 时钟 重载 dash ros typedef 计数 res
基本定时器:TIM6,TIM7 (APB1总线)
通用定时器:TIM2,TIM3,TIM4,TIM5 (APB1总线)
高级计时器:TIM1,TIM8 (APB2总线)
计数器寄存器 (TIMx_CNT)
预分频器寄存器 (TIMx_PSC)
自动装载寄存器 (TIMx_ARR)
重复次数寄存器 (TIMx_RCR)
递增计数模式:计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。
递减计数模式:计数器从自动重载值开始递减到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。
中心对齐模式:计数器从 0 开始计数到自动重载值 – 1 ,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数
以下分别以TIM1,TIM2为例
APB1 Timer clocks 以 36 MHz 为例
APB2 Timer clocks 以 72 MHz 为例
Clock Source->Internal Clock
TIM1 -> NVIC Settings -> TIM1 update interrupt -> Enabled
TIM2 -> NVIC Settings -> TIM2 global interrupt -> Enabled
定时频率 = 定时器时钟 / ( (预分频 +1) / (计数值 +1) ) Hz
定时时间 = 1 / 定时频率 s
Prescaler(预分频)——7199
Counter Period(计数值)——9999
auto-reload preload(是否重装定时器)——Enable
Prescaler(预分频)——35999
Counter Period(计数值)——999
auto-reload preload(是否重装定时器)——Enable
HAL_TIM_Base_Start_IT(&htim1); //定时器1使能
HAL_TIM_Base_Start_IT(&htim2); //定时器2使能
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == htim1.Instance)//确定是哪个定时器
{ //定时器1中断业务 }
else if(htim-> Instance == htim2.Instance)
{ //定时器2中断业务 }
}
标签:ack settings 时钟 重载 dash ros typedef 计数 res
原文地址:https://www.cnblogs.com/qu-yang/p/12678642.html