定时器中断跨文件使用变量 1.初始化定时器1定时器结构图2.步骤1.RCC开启时钟2.选择时基单元的时钟源定时中断选择内部时钟源3.配置时基单元包括预分频器自动重装器计数模式等用结构体配置4.配置中断输出控制允许更新中断输出到NVIC5.配置NVIC在NVIC中打开定时器中断的通道并分配一个优先级6.运行控制在整个模块配置完成后我们还需要使能计数器3.执行流程当定时器使能后计数器就开始计数计数器更新时触发中断在编写一个定时器的中断函数就可以达到中断函数每隔一段时间就能自动执行一次的效果2.定时器库函数1.TIM_DeInit恢复缺省配置2.TIM_TimeBaseInit时基单元初始化用于配置时基单元参数有TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct1.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其他定时器的时钟参数有TIMxTIM_InputTriggerSource1.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_ExtTRGPolarityExtTRGFilter极性和滤波器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_ExtTRGPolarityExtTRGFilter极性和滤波器注若不需要触发输入功能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_PSCReloadMode1.TIMx选择要配置的定时器2.Prescaler选择写入的预分频值3.TIM_PSCReloadMode写入的模式8.TIM_CounterModeConfig用于改变计数器的计数模式参数有TIM_TypeDef* TIMx, uint16_t TIM_CounterMode1.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_DIV1TIM_CKD_DIV2TIM_CKD_DIV4分别代表1分频不分频2分频4分频4.计数器模式1.分为向上计数TIM_CounterMode_Up向下计数TIM_CounterMode_Down和三种中央对齐模式TIM_CounterMode_CenterAligned1TIM_CounterMode_CenterAligned2TIM_CounterMode_CenterAligned35.剩余参数1.PeriodARR自动重装器的值2.PrescalerPSC预分频器的值3.RepetitionCounter重复计数器的值6.定时时间1.以定时1秒为例使用计数器溢出频率公式CK_CNT_OVCK_CNT/(ARR1)CK_PSC/(PSC1)/(ARR1)CK_PSC72MHz7.跨文件使用变量1.在使用变量的文件上面用extern声明要用的变量2.直接在主函数中复制中断函数

相关新闻

最新新闻

其他的 Agent 设计范式与 Agent 和 Workflow的区别

其他的 Agent 设计范式与 Agent 和 Workflow的区别

摘要:在大型语言模型(LLM)的应用落地浪潮中,“Agent(智能体)”与“Workflow(工作流)”已成为被频繁提及却也最容易混淆的两个核心概念。究竟什么是真正的 Agent?它与传统…

2026/8/28 11:19:58
具身智能规模化落地:从VLA模型到树莓派小车的最小系统实践

具身智能规模化落地:从VLA模型到树莓派小车的最小系统实践

具身智能喊了好几年,从实验室里的机械臂抓取,到工厂里的质检分拣,再到家庭服务机器人,大家都在等一个“真正能规模落地”的拐点。但拐点不是靠换一台更贵的机械臂、加更多传感器就能出现的,真正的变量在机器人“大脑”…

2026/8/28 11:19:58
Python学生信息管理系统:从基础菜单到工业级设计的实战指南

Python学生信息管理系统:从基础菜单到工业级设计的实战指南

1. 项目概述与核心价值 最近在整理教学资料时,翻出了几年前带学生做的一个经典练手项目——用Python实现一个学生信息管理系统。这个项目几乎是每个Python初学者在掌握了基础语法和数据结构后,第一个有完整交互逻辑的实战案例。而整个系统的“门面”和“…

2026/8/28 11:19:58
RVV Benchmark实战:从环境到选型的关键解读

RVV Benchmark实战:从环境到选型的关键解读

RVV benchmark 最近讨论度明显上来了,尤其是 SiFive P870、Lanxin LX500、Epic Semi Contrail AIx 这三类 RISC-V 处理器被放在一起对比的时候。它们都支持 RISC-V 向量扩展 RVV,但定位差得很远:有的是通用高性能 IP,有的是面向 A…

2026/8/28 11:19:58
动态规划建模实战:从核心思想到代码实现与避坑指南

动态规划建模实战:从核心思想到代码实现与避坑指南

1. 从“走迷宫”到“最优路径”:动态规划的核心思想 最近在带学生做数学建模竞赛,发现很多同学一遇到多阶段决策问题,比如资源分配、生产计划、最短路径优化,第一反应就是上启发式算法或者机器学习。这当然没错,但往往…

2026/8/28 11:19:58
让搜索替你找上门:Tech Interview Handbook 面试准备内容 SEO 落地 7 步拆解

让搜索替你找上门:Tech Interview Handbook 面试准备内容 SEO 落地 7 步拆解

让搜索替你找上门:Tech Interview Handbook 面试准备内容 SEO 落地 7 步拆解 【免费下载链接】tech-interview-handbook Curated coding interview preparation materials for busy software engineers 项目地址: https://gitcode.com/GitHub_Trending/te/tech-in…

2026/8/28 11:14:58