定时中断和内外时钟源选择

发布时间 2023-04-16 18:56:41作者: 整点薯条拯救一切
  • 定时器和中断系统的电路都在STM32内部,故只需在外插一个OLED显示屏即可
  • 定时器不涉及外部硬件,所以把模块封装到System文案金夹,并初始化,把【定时中断基本结构】全部打通
    1. RCC开启时钟,同时定时器的基准时钟和整个外设的工作时钟都会同时打开
    2. 选择时基单元的时钟源,(定时中断选择内部时钟源)
    3. 配置时基单元,包括用结构体配置预分频器,自动重装器,计数模式
    4. 配置输出中断控制,允许更新中断输出到NVIC
    5. 配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级
    6. 运行控制
    7. 使能计数器
  • 回到keil进行编写:

查看定时器的库函数都有那些:【Library——>stm32f10x_tim.h——>拖到最后】

void TIM_DeInit(TIM_TypeDef* TIMx);//恢复缺省配置
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);//时基单元初始化
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);//把结构体变量赋一个默认值

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);//使能计数器

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);//使能中断输出信号
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);//选择内部时钟

void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);//选择ITRx其他定时器时钟

void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter);//选择TIx捕获通道的时钟

void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);//选择ETR通过外部时钟模式1输入的时钟

 

  • 小tips