尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
定时器中断跨文件使用变量
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.直接在主函数中复制中断函数
RELATED

相关推荐

AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作

AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作

AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mi…

📅 2026/10/6 12:24:18
为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案

为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案

为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案 【免费下载链接】mermaid Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid …

📅 2026/10/7 12:46:22
我用AI中转平台3个月:接入、踩坑与稳定性实测记录

我用AI中转平台3个月:接入、踩坑与稳定性实测记录

过去3个月,我用一个 AI 中转平台跑自己的内容工具项目,经历了接入、踩坑、调优、稳定运行的完整过程。这篇是真实使用记录,包含具体数据和实际体验,也对比了官方 Claude API 的差异。不夸大,也不回避问题。 背景&#…

📅 2026/10/7 11:27:17
MORE NEWS

更多资讯

📰

从零实现Linux Shell解释器:系统编程实战指南

1. 项目概述:打造自己的Shell命令行解释器在Linux系统中,Shell作为用户与内核交互的桥梁,其重要性不言而喻。但你是否想过,这个每天都要打交道的命令行界面,其内部究竟是如何工作的?今天我们就来动手实现一…

📰

YOLO26目标检测框架:工业级极速优化与部署实战

1. YOLO26核心特性解析:为工业落地而生的极速检测框架YOLO26作为目标检测领域的最新力作,其设计理念直击产业痛点——在保持YOLO系列高精度的同时,通过架构级优化实现前所未有的推理速度。我在实际部署测试中发现,相比前代模型&am…

📰

DIY专业证件照:手机拍摄与PS修图全攻略

1. 为什么需要在家制作专业证件照?最近三年,我帮家人朋友处理过47次证件照需求。从签证申请到工作入职,每次冲印店拍摄的平均花费是68元,而电子版加修图还要额外支付30-50元。更糟心的是,有次紧急需要2寸白底照&#x…

📰

RAG技术中向量检索引擎选型与优化实践

1. RAG技术中的向量检索引擎选型困境第一次接触RAG(Retrieval-Augmented Generation)架构时,我像大多数开发者一样,被琳琅满目的向量检索引擎选项晃花了眼。FAISS、HNSW、BM25这些名词在技术文档里频繁出现,但究竟哪个…

📰

从零实现Linux Shell解释器:原理与实践

1. 从零实现一个Linux Shell解释器在Linux系统管理中,Shell作为用户与内核交互的桥梁,其重要性不言而喻。当我第一次在终端输入ls命令并看到文件列表时,就对这个"魔法"背后的原理产生了浓厚兴趣。本文将带你深入Shell解释器的内部机…

📰

智能阀门与新材料技术驱动工业变革

1. 阀门行业现状与变革驱动力阀门作为工业管路系统的"心脏起搏器",其开闭动作直接决定了流体介质的生命线。过去三年全球阀门市场规模以4.3%的年复合增长率稳步扩张,2023年达到820亿美元规模。这个看似传统的领域正经历着三重变革冲击&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬