当前位置: 首页 > news >正文

定时器中断跨文件使用变量

1.初始化定时器

1,定时器结构图

2.步骤

1.RCC开启时钟

2.选择时基单元的时钟源(定时中断选择内部时钟源)

3.配置时基单元(包括预分频器,自动重装器,计数模式等(用结构体配置))

4.配置中断输出控制,允许更新中断输出到NVIC

5.配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级

6.运行控制:在整个模块配置完成后,我们还需要使能计数器

3.执行流程:当定时器使能后,计数器就开始计数,计数器更新时,触发中断,在编写一个定时器的中断函数,就可以达到中断函数每隔一段时间就能自动执行一次的效果

2.定时器库函数

1.TIM_DeInit:恢复缺省配置

2.TIM_TimeBaseInit:时基单元初始化,用于配置时基单元,参数有(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)

1.TIMx:选择某个定时器

2.TIM_TimeBaseInitStruct:结构体,包含了配置时基单元的一些参数

3.TIM_TimeBaseStructInit:把结构体变量赋予一个默认值

4.TIM_Cmd:用于使能计数器,运行控制,参数有(TIM_TypeDef* TIMx, FunctionalState NewState)

1.TIMx:选择定时器

2.FunctionalState NewState:新的状态,也就是使能或失能(使能-计数器可以运行,失能-计数器不能运行)

5.TIM_ITConfig:用于使能中断输出信号,中断输出控制,参数有(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)

1.TIMx:选择定时器

2.TIM_IT:选择要配置哪个中断输出

3. NewState:新的状态,即使能还是失能

6.时钟源选择部分(可以选择RCC内部时钟,ETR外部时钟,ITRx其他定时器,TIx捕获通道)

1.void TIM_InternalClockConfig(TIM_TypeDef* TIMx);:选择内部时钟
2.void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);:选择ITRx其他定时器的时钟,参数有TIMx,TIM_InputTriggerSource

1.TIMx:选择要配置的定时器

2.TIM_InputTriggerSource:选择要接入的其他定时器
3.void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
uint16_t TIM_ICPolarity, uint16_t ICFilter);:选择TIx捕获通道的时钟,

参数含义

1.TIMx:选择要配置的定时器

2.TIM_TIxExternalCLKSource:选择TIx具体的某个引脚

3.TIM_ICPolarity,:输入的极性

4.ICFilter:输入的滤波器
4.void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);:选择ETR通过外部模式1输入的时钟

参数含义

1.TIMx:选择要配置的定时器

2.TIM_ExtTRGPrescaler:外部触发预分频器,可以对ETR的外部时钟再提前做一个分频

3.TIM_ExtTRGPolarity,ExtTRGFilter:极性和滤波器
5.void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);:选择ETR通过外部模式2输入的时钟

参数含义

1.TIMx:选择要配置的定时器

2.TIM_ExtTRGPrescaler:外部触发预分频器,可以对ETR的外部时钟再提前做一个分频

3.TIM_ExtTRGPolarity,ExtTRGFilter:极性和滤波器

注:若不需要触发输入功能void TIM_ETRClockMode1Config和.void TIM_ETRClockMode2Config可以互换
6.void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);:单独用来配置ETR引脚的预分频器,极性,滤波器等参数

7.TIM_PrescalerConfig:用于单独写预分频值,参数有TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode

1.TIMx:选择要配置的定时器

2.Prescaler:选择写入的预分频值

3.TIM_PSCReloadMode:写入的模式

8.TIM_CounterModeConfig:用于改变计数器的计数模式,参数有TIM_TypeDef* TIMx, uint16_t TIM_CounterMode

1.TIMx:选择要配置的定时器

2.TIM_CounterMode:选择新的计数器模式

9.TIM_ARRPreloadConfig:用于自动重装器功能配置,这个参数的失能或失能可以选择是否有预装

10.TIM_SetCounter:给计数器写入一个值

11.TIM_SetAutoreload:给自动重装器写入一个值

12.TIM_GetCounter:获取当前计数器的值

13.TIM_GetPrescaler:获取当前预分频器的值

14.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,作用:上述四个函数用于获取和清除标志位

3.时钟分频

1.作用:在定时器外部信号输入引脚,一般都会有一个滤波器,可以过滤掉信号的抖动干扰

2.工作原理:在一个固定的时钟频率f下进行采样,如果N个采样点均为相同电平,则输入信号稳定,输出采样值,若出现不相同电平,说明信号有抖动,保持上一次输出,或直接输出低电平,这样就能保证输出信号在一定程度上的滤波(采样频率f和采样点数N都是滤波器的参数,频率越低,采样点数越多,滤波效果越好,信号延迟越大)

3.采样频率f从内部时钟或内部时钟外挂一个外部时钟分频而来,分频多少就是由参数clock division决定)

4.clock division:参数有TIM_CKD_DIV1,TIM_CKD_DIV2,TIM_CKD_DIV4,分别代表1分频(不分频),2分频,4分频

4.计数器模式

1.分为向上计数(TIM_CounterMode_Up),向下计数(TIM_CounterMode_Down),和三种中央对齐模式(TIM_CounterMode_CenterAligned1,TIM_CounterMode_CenterAligned2,TIM_CounterMode_CenterAligned3)

5.剩余参数

1.Period:ARR自动重装器的值

2.Prescaler:PSC预分频器的值

3.RepetitionCounter:重复计数器的值

6.定时时间

1.以定时1秒为例:使用计数器溢出频率公式CK_CNT_OV=CK_CNT/(ARR+1)=CK_PSC/(PSC+1)/(ARR+1)(CK_PSC=72MHz)

7.跨文件使用变量

1.在使用变量的文件上面用extern声明要用的变量

2.直接在主函数中复制中断函数

http://www.jsqmd.com/news/1141977/

相关文章:

  • 蓝牙5.4 LE Audio开发实战:IDC777-1与STM32L4A6RG方案解析
  • 大数据开发工具-Transwarp Data Studio
  • STM32与WSEN-ISDS传感器硬件协同设计与姿态解算实践
  • STM32与EM3080-W构建高效条形码解码系统
  • INI配置文件安全风险剖析:渗透测试中的敏感信息泄露与利用
  • GTA5线上小助手:解锁洛圣都无限可能的终极开源方案
  • STM32与L9958电机驱动系统设计与优化
  • Netcat for Windows:终极网络调试瑞士军刀解决方案
  • Python快速上手:调用企业工商API接口,构建供应商画像
  • 高精度ADC方案设计:基于ADS131M02与PIC18F46K42
  • 多传感器融合时间同步方案对比:PPS+RTC vs PTP vs 硬件触发3种模式
  • 高效智能的KKManager:Illusion游戏模组管理终极解决方案
  • 工业级数字隔离器与高性能微控制器的技术解析与应用
  • 探索消费级GPU虚拟化的3种技术实现路径:从硬件限制到软件突破
  • TPAFE0808与STM32L031C6在工业控制中的高精度信号采集方案
  • IS31FL3731与PIC18F97J94的LED驱动方案解析
  • PIC18微控制器扩展EEPROM存储方案与优化实践
  • EM3080-W条码扫描模块与TM4C1294微控制器的工业应用
  • LV30条码扫描器与PIC18LF4682微控制器的工业级解码系统设计
  • Stable Diffusion本地部署:免费无限生成AI绘画的完整指南
  • ASM330LHH与STM32C031C6在运动跟踪中的低功耗方案
  • 工业级4-20mA电流环方案设计与优化实践
  • Blender四边形重构终极指南:QRemeshify插件让3D建模更简单
  • 好用的电商AI工具推荐:如何判断一款工具是否真正适合内容运营场景
  • [具身智能-563]:三大具身智能平台完整对比:RK3588(瑞芯微)、树莓派 5、地瓜 RDK(X5/S100)
  • 3步掌握BS-RoFormer:用轴向注意力实现音乐分离的深度学习突破
  • Stable Diffusion本地部署指南:从环境配置到生成优化全解析
  • 基于WSEN-ISDS和TM4C129的三轴运动追踪系统实现
  • OpCore Simplify:智能黑苹果EFI配置工具如何终结硬件兼容性难题
  • XSS监控平台核心架构与请求处理流程深度解析