32单片机定时中断和定时器外部时钟

 

 第一步:RCC开启时钟

第二步:选择时基单元的时钟源

第三步:配置时基单元,包括预分频器,自动重装器,计数模式

第四步:配置输出中断控制,允许更新中断输出到NVIC

第五步:配置NVIC,在NVIC打开定时器中断的通道,并且分配优先级

第六步:运行控制,使能计数器,定时器中断函数

 TIM_Init(TIM TypeDef* TIMx);

TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

时基单元部分初始化,配置时基单元的,第一个参数选择某个定时器,第二个配置参数结构体

void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

结构体变量赋予初始值,可以修改需要的参数

TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

运行控制启动定时器 --使能计数器-------参数1 选择定时器,参数2:选择状态失能还是使能

TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

中断输出部分:使能中断输出信号----参数1:选择计时器,参数2:选择配置的中断输出,参数3:使能或者失能

void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,uint16_t TIM_ICPolarity, uint16_t ICFilter);
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
                             uint16_t ExtTRGFilter);
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 
                             uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
                   uint16_t ExtTRGFilter);

时基单元的时钟源选择部分

void TIM_InternalClockConfig(TIM_TypeDef* TIMx); 调用内部时钟RCC

void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);

参数1:选择配置的定时器   参数2:选择要接入那个外设定时器

void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,uint16_t TIM_ICPolarity, uint16_t ICFilter);

选择TIx捕获通道的时钟

参数1:选择配置的定时器 参数2:选择配置的引脚   参数34:极性选择和滤波器

void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);

选择通过外部时钟模式1 输入时钟 

参数1:选择配置的定时器 参数2:预分频   参数34:极性选择和滤波器

void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);

参数1:选择配置的定时器 参数2:预分频   参数34:极性选择和滤波器

void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);

不是选择时钟,单独配置ETR引脚的预分频器,极性,滤波器这些参数

其他函数 

void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode)

单独写预分频值 ,参数1:选择配置定时器,参数2:写入预分频值,参数3:写入模式(听从安排 

void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);

选择新的计数模式

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

自动重装器预装功能配置

void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);

给计数器写入一个值

void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);

给自动重装器写入一个值

uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);

获得当前计数器的值

uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);

获取当前预分频的值

  • FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  • void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  • ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  • void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);

获取标志位和清除标志位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值