news 2026/7/7 15:22:21

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
定时器中断跨文件使用变量

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.直接在主函数中复制中断函数

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 15:19:55

大数据开发工具-Transwarp Data Studio

大数据开发工具-Transwarp Data StudioTranswarp Data Studio ( 简称TDS ) 是星环科技自研的一站式大数据开发工具,提供数据集成、存储、治理、服务和共享等数据处理全生命周期的企业级管理能力,结合星环科技大数据基础平台 Transwarp Data Hub&#xff…

作者头像 李华
网站建设 2026/7/7 15:19:22

工业4-20mA电流环的高精度DAC与MCU解决方案

1. 工业4-20mA电流环的背景与挑战 在工业自动化领域,4-20mA电流环传输技术已经存在了半个多世纪,却依然是过程控制系统中模拟信号传输的黄金标准。这种看似简单的技术规范背后,蕴含着工业环境对可靠性的极致追求——电流信号抗干扰能力强&…

作者头像 李华
网站建设 2026/7/7 15:17:17

KKManager:Illusion游戏模组管理的现代化解决方案

KKManager:Illusion游戏模组管理的现代化解决方案 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager KKManager为Illusion公司旗下基于BepInEx框架的…

作者头像 李华
网站建设 2026/7/7 15:16:01

Cat-Catch资源嗅探扩展终极指南:5步快速掌握网页媒体抓取技巧

Cat-Catch资源嗅探扩展终极指南:5步快速掌握网页媒体抓取技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经在浏览网页时&…

作者头像 李华
网站建设 2026/7/7 15:15:02

工业级数字隔离器与高性能微控制器的技术解析与应用

1. 理解SLO2016与MK24FN1M0VDC12的技术定位 在工业控制和嵌入式系统领域,信息传递的可靠性与实时性往往决定着整个系统的成败。SLO2016和MK24FN1M0VDC12这两个看似晦涩的型号编码,实际上代表着两类关键电子元器件——前者是工业级数字隔离器,…

作者头像 李华
网站建设 2026/7/7 15:10:38

工业控制中多路数字信号输入的硬件与固件优化方案

1. 复杂系统输入扩展的硬件选型逻辑 在工业控制和嵌入式系统设计中,处理多路数字信号输入是常见需求。传统方案通常采用一对一GPIO连接,当需要监控数十个开关量时,这种设计会导致微控制器引脚资源迅速耗尽。MC74HC165A作为8位并行输入/串行输…

作者头像 李华