石排镇仿做网站,网站盈利方法,价格低的手机,深圳大促网络科技有限公司外部时钟源选择
配置环境
选择TIM2 配置红色框图中的各种配置
时钟源选择外部时钟 2 1. 预分频器 Prescaler #xff0c;下面填0#xff0c;不分频 2. 计数模式 CounterModer #xff0c;计数模式选择为向上计数 3. 自动重装寄存器 CouterPeriod #xff0c;自动重…外部时钟源选择
配置环境
选择TIM2 配置红色框图中的各种配置
时钟源选择外部时钟 2 1. 预分频器 Prescaler 下面填0不分频 2. 计数模式 CounterModer 计数模式选择为向上计数 3. 自动重装寄存器 CouterPeriod 自动重装计数器填为 10 计数到 10 后清空并出发中断 4. 滤波器的频率分频 InternalClockDivision 5. auto-reload preload 不使用影子寄存器 打开NVIC 这部分采用默认的即可 1. ClockFilter: 用来控制滤波的采样频率和采集点 2. Clock Polarity: 表示低电平或下降沿有效 3. ClockPrescaler: 表示输入的信号不进行分频 初始化TIM2
在main函数中 HAL_TIM_Base_Start_IT(htim2);
重写回调函数
uint16_t hhRetCount0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htimhtim2){hhRetCount1;}
}
显示定时值与CNT
OLED_ShowString(1, 1, count:);
OLED_ShowString(2, 1, CNT:);
while (1)
{
OLED_ShowNum(1, 7, hhRetCount,5);
OLED_ShowNum(2,5, __HAL_TIM_GET_COUNTER(htim2),5);
}
显示效果 问题与解决
在程序启动的时候外部还没有给信号就进入了一次中断使得count的次数变成了1解决办法和keil中的一样。在启动中断前清空一次标志位
__HAL_TIM_CLEAR_FLAG(htim2, TIM_FLAG_UPDATE);