当前位置:   article > 正文

从0开始的STM32HAL库学习6

从0开始的STM32HAL库学习6

外部时钟源选择

配置环境

选择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);

重写回调函数

  1. uint16_t hhRetCount=0;
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  3. {
  4. if(htim==&htim2){
  5. hhRetCount+=1;
  6. }
  7. }

显示定时值与CNT

  1. OLED_ShowString(1, 1, "count:");
  2. OLED_ShowString(2, 1, "CNT:");
  3. while (1)
  4. {
  5. OLED_ShowNum(1, 7, hhRetCount,5);
  6. OLED_ShowNum(2,5, __HAL_TIM_GET_COUNTER(&htim2),5);
  7. }

显示效果

问题与解决

在程序启动的时候,外部还没有给信号,就进入了一次中断使得count的次数变成了1,解决办法和keil中的一样。在启动中断前清空一次标志位

__HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_UPDATE);

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/875673
推荐阅读
相关标签
  

闽ICP备14008679号