版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1.3 定时器的定时/计数功能12通用定时器框图F4中文参考手册Page3941时钟源控制器时基单元234输入捕获输出比较51 时基单元3--
南昌大学“卓越”辅导员培养工程建设Timer时钟源内部时钟CK_INT外部输入引脚CHx外部触发输入ETR内部触发信号ITRx时钟源选择时基单元的预分频时钟CK_PSC外部时钟模式1:捕获/比较通道CH1/CH2外部时钟模式2:外部触发引脚ETR内部触发输入:使用一个定时器作为另一个定时器的预分频器内部时钟:来自外设总线APB提供的时钟CK_INT(定时器时钟TIM_CLK)定时模式计数模式计数模式从模式4--
南昌大学“卓越”辅导员培养工程建设时基单元Timer预分频计数器预分频寄存器核心计数器计数器寄存器预分频时钟CK_PSC自动重载寄存器自动重载模块时基单元功能框架计数模块预分频模块计数时钟CK_CNT工作在定时模式时:内部时钟CK_INT定时器时钟TIM_CLK5--
南昌大学“卓越”辅导员培养工程建设Timer预分频模块预分频计数器预分频寄存器对预分频时钟CK_PSC进行分频TIMx_PSC:设置预分频系数PSCTIM_CLK为100MHz,16位定时器的最大定时时间为0.65ms,经过预分频以后,可以降低计数时钟CK_CNT的频率作用1:扩大定时器的定时范围作用2:获取精确的计数时钟TIM_CLK为72MHz,可以通过设置预72分频寄存器,使计数时钟CK_CNT变为1MHz,从而获得精确的计数时钟预分频模块x表示定时器的编号如TIM1或TIM26--
南昌大学“卓越”辅导员培养工程建设Timer工作原理定时器启动后,预分频计数器的初值为0,预分频时钟CK_PSC每来一个时钟,预分频计数器的值就加1。当计数值等于预分频寄存器所设定的预分频系数PSC时,预分频计数器的值将清零,开始下一轮计数。预分频模块预分频模块工作原理7Timer预分频模块预分频时序图分频公式从0计数到PSC实际计数值为PSC+13假设预分频系数PSC=3计数时钟预分频时钟预分频系数CK_CNT=CK_PSC/(PSC+1
)8--
南昌大学“卓越”辅导员培养工程建设Timer计数模块核心计数器计数器寄存器对计数时钟CK_CNT进行二次计数TIMx_CNT:存放核心计数器运行时的当前计数值计数模块9--
南昌大学“卓越”辅导员培养工程建设Timer自动重载模块递增计数模式递减计数模式TIMx_ARR的值作为核心计数器的计数终值TIMx_ARR的值作为核心计数器的计数初值自动重载模块由自动重载寄存器TIMx_ARR组成自动重载模块10--
南昌大学“卓越”辅导员培养工程建设Timer计数模式0→
ARR-1ARR→
10→
ARRARR→
0定时器的三种计数模式上溢下溢下溢上溢11--
南昌大学“卓越”辅导员培养工程建设Timer计数模式计数模式计数器溢出值计数器重载值递增计数CNT=
ARRCNT=
0递减计数CNT=
0CNT=
ARR中心对齐计数CNT=
ARR-1CNT=
ARRCNT=
1CNT=
0溢出值CNT与自动重载值ARR的关系列表12从0计数到ARR实际计数值为ARR+1上溢事件定时器时序图更新中断/定时中断PSC=
1对CK_PSC两分频PSC=1,ARR=
36递增计数,CNT
=
013--
南昌大学“卓越”辅导员培养工程建设Timer定时时间公式𝐀𝐑𝐑
+
𝟏 ∗ 𝐏𝐒𝐂+
𝟏𝐓𝐈𝐌_𝐂𝐋𝐊(𝐇𝐳)T
(s)
=定时时间
=
计数值
*
计数时间定时时间
=
计数值
/
时钟频率计数值
=
ARR
+1时钟频率=TIM_CLK/(PSC+1
)计数时钟CK_CNT定时器时钟,等于预分频时钟CK_PSC自动重载值预分频系数定时器时钟定时器的定时时间公式14--
南昌大学“卓越”辅导员培养工程建设Timer相关寄存器TIMx_PSC:设置预分频系数,将预分频时钟(CK_PSC)进行1~65536之间的任意值分频,得到计数时钟(CK_CNT)预分频寄存器TIMx_CNT
:存放核心计数器运行时的当前计数值,便于用户实时掌握核心计数器的当前计数值计数器寄存器TIMx_ARR:为计数器设置计数边界或重载值。比如计数器递增计数时,记到多少发生溢出;递减计数时,从多少开始往下计数自动重载寄存器寄存器PSCCNTARR152 外部脉冲计数16--
南昌大学“卓越”辅导员培养工程建设Timer时钟源内部时钟CK_INT外部输入引脚CHx外部触发输入ETR内部触发信号ITRx时钟源选择时基单元的预分频时钟CK_PSC外部时钟模式1:对来自捕获/比较通道CH1/CH2的外部脉冲信号进行计数外部时钟模式2:对来自外部触发引脚ETR的外部脉冲信号进行计数时基单元的四种时钟源计数模式计数模式17--
南昌大学“卓越”辅导员培养工程建设Timer内部结构1边沿选择2分频3滤波送入时基单元的预分频时钟注意:外部脉冲信号的分频和滤波并不是必需的,可以根据它的频率高低及信号干净程度来决定外部触发引脚ETR的内部结构18--
南昌大学“卓越”辅导员培养工程建设TimerETR引脚定时器的ETR引脚对应GPIO引脚TIM1_ETRPA12TIM2_ETRPA0/PA5/PA15TIM3_ETRPD2STM32F411芯片的ETR引脚查询芯片的数据手册Datasheet193
定时/计数功能的数据类型和接口函数20时基单元Timer时基单元初始化类型结构体类型,包括6个成员变量Period的值不能设置为0,否则定时器将不会启动21信号滤波Timer宏常量定义含义TIM_CLOCKDIVISION_DIV1对定时器时钟TIM_CLK进行1分频TIM_CLOCKDIVISION_DIV2对定时器时钟TIM_CLK进行2分频TIM_CLOCKDIVISION_DIV4对定时器时钟TIM_CLK进行4分频成员变量ClockDivision的取值范围主要用于输入信号的滤波,一般使用默认值:1分频22计数模式Timer成员变量CounterMode的取值范围宏常量定义含义TIM_COUNTERMODE_UP递增计数模式TIM_COUNTERMODE_DOWN递减计数模式TIM_COUNTERMODE_CENTERALIGNED1中心对齐计数模式1TIM_COUNTERMODE_CENTERALIGNED2中心对齐计数模式2TIM_COUNTERMODE_CENTERALIGNED3中心对齐计数模式3三种中心对齐计数模式的区别主要是输出比较中断标志位的设置方式23预装载功能Timer宏常量定义含义TIM_AUTORELOAD_PRELOAD_DISABLE预装载功能关闭TIM_AUTORELOAD_PRELOAD_ENABLE预装载功能开启成员变量AutoReloadPreload的取值范围用于设置自动重载寄存器TIMx_ARR的预装载功能,即自动重装寄存器的内容是更新事件产生时写入有效,还是立即写入有效;预装载功能在多个定时器同时输出信号时比较有用,可以确保多个定时器的输出信号在同一个时刻变化,实现同步输出;单个定时器输出时,一般不开启预装载功能。24--
南昌大学“卓越”辅导员培养工程建设时基初始化1 时基单元初始化函数:HAL_TIM_Base_InitTimer接口函数:HAL_TIM_Base_Init函数原型HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim
)功能描述按照定时器句柄中指定的参数初始化定时器时基单元入口参数htim:定时器句柄的地址返回值HAL状态值注意事项该函数将调用MCU底层初始化函数HAL_TIM_Base_MspInit完成引脚、时钟和中断的设置该函数由CubeMX自动生成25--
南昌大学“卓越”辅导员培养工程建设轮询模式启动2 轮询模式启动函数:HAL_TIM_Base_StartTimer接口函数:HAL_TIM_Base_Start函数原型HAL_StatusTypeDefHAL_TIM_Base_Start(TIM_HandleTypeDef
*htim)功能描述在轮询方式下启动定时器运行入口参数htim:定时器句柄的地址返回值HAL状态值注意事项该函数在定时器初始化完成之后调用函数需要由用户调用,用于轮询方式下启动定时器运行26--
南昌大学“卓越”辅导员培养工程建设中断模式启动3 中断模式启动函数:HAL_TIM_Base_Start_ITTimer接口函数:HAL_TIM_Base_Start_IT函数原型HAL_StatusTypeDefHAL_TIM_Base_Start_IT(TIM_HandleTypeDef
*htim)功能描述使能定时器的更新中断,并启动定时器运行入口参数htim:定时器句柄的地址返回值HAL状态值注意事项该函数在定时器初始化完成之后调用函数需要由用户调用,用于使能定时器的更新中断,并启动定时器运行启动前需要调用宏函数
HAL_TIM_CLEAR_IT来清除更新中断标志27--
南昌大学“卓越”辅导员培养工程建设通用处理函数4 定时器中断通用处理函数HAL_TIM_IRQHandlerTimer接口函数:HAL_TIM_IRQHandler函数原型voidHAL_TIM_IRQHandler(TIM_HandleTypeDef
*htim);功能描述作为所有定时器中断发生后的通用处理函数入口参数htim:定时器句柄的地址返回值无注意事项函数内部先判断中断类型,并清除对应的中断标志,最后调用回调函数完成中断处理该函数由CubeMX自动生成285 定时器更新中断回调函数HAL_TIM_PeriodElapsedCallback接口函数:HAL_TIM_PeriodElapsedCallback函数原型voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef
*htim)功能描述回调函数,用于处理所有定时器的更新中断,用户在该函数内编写实际的任务处理程序入口参数htim:定时器句柄的地址返回值无注意事项该函数由定时器中断通用处理函数HAL_TIM_IRQHandler调用,完成所有定时器的更新中断的任务处理函数内部需要根据定时器句柄的实例来判断是哪一个定时器产生的本次更新中断函数由用户根据具体的处理任务编写29--
南昌大学“卓越”辅导员培养工程建设计数值读取6 计数值读取函数
HAL_TIM_GET_COUNTERTimer#define)
(( HANDLE )->Instance->CNT)带参数的宏HAL_TIM_GET_COUNTER( HANDLE定时器句柄的地址该函数通过直接访问计数器寄存器TIMx_CNT来获取计数器的当前计数值30辅导员培养工程建设--
南昌大学“卓越”中断标志清除7 定时器中断标志清除函数
HAL_TIM_CLEAR_ITTimer#define
__HAL_TIM_CLEAR_IT( HANDLE__,INTERRUPT )带参数的宏宏常量定义含义TIM_IT_UPDATE更新中断标志TIM_IT_CC1通道1的捕获/比较中断标志TIM_IT_CC2通道2的捕获/比较中断标志TIM_IT_CC3通道3的捕获/比较中断标志TIM_IT_CC4通道4的捕获/比较中断标志定时器句柄的地址定时器中断标志(( HANDLE )->Instance->SR
=
~( INTERRUPT ))常用中断标志313.1.3 任务:智能小车运动控制系统设计与实现32基础任务01任务目标掌握CubeMX软件配置定时器实现基本定时的方法02任务内容为了让小车能够正常地在黑色跑道上行驶,需要设置定时器每1ms产生一次中断,在中断服务程序中读取光电对管的状态,然后调整小车姿态,不让小车跑偏。在仿真实验中,用PF9驱动LED灯翻转,同时用示波器观察PF9的波形,若设计正确,PF9的频率应该为500Hz。Timer智能小车运动控制系统设计与实现33任务分析Timer定时时间计算公式ARR
+
𝟏 ∗ PSC +
𝟏𝐓𝐈𝐌_𝐂𝐋𝐊(𝐇𝐳)T
(s)
=分析:1.本任务使用定时器9,挂接在APB2总线,时钟频率为168MHz;2.任务要求的定时时间为1ms,由于TIM_CLK为168MHz,可以假设PSC为(168-1),根据公式计算可得ARR的值也为(1000-1)。注意:PSC和ARR参数的选取,以不超过它们的计数范围为准。TIMx_PSC为16位寄存器,最大预分频系数为65536。TIMx_ARR寄存器的位数由定时器位数决定:16位定时器,ARR的最大值为65535;32位定时器,ARR的最大值为4294967295。34引脚分配步骤二:引脚分配Timer35在引脚分配图中选择PF9(LED)为OutputPushPull(推挽输出)、Nopull_upnopull_down(不上拉、不下拉)、Medium(翻转速度中),PF7~PF0(连接8对光电管)为inputmode(输入模式)、Pullup(默认上拉)。定时器9的配置预分频系数PSC自动重载值ARR123其余参数使用默认配置:计数模式为递增计数内部时钟不分频不使能自动重载功能勾选364使能定时器9的中断中断优先级使用默认值中断使能Timer定时器9的配置37------------主程序代码步骤六:程序编写添加用户初始代码38定时器更新中断回调函数使用句柄的实例来判断发生更新中断的定时器PF9用于波形观察,测试用读取8只光电对管的状态定时中断流程定时器9递增计数,从0开始记到自动重载值ARR时,产生计数器上溢事件,触发更新中断在启动文件中根据中断类型号找到对应的中断服务程序TIM1_BRK_TIM9_IRQHandler在中断服务程序中再调用定时器通用处理函数HAL_TIM_IRQHandler在函数内部先判断中断类型,并清除对应的中断标志,然后调用更新中断回调函数HAL_TIM_PeriodElapsedCallback完成具体的任务处理Timer40定时器初始化函数本任务为基本定时功能,只进行了时基单元的初始化,初始化参数根据用户在CubeMX中的设置决定由CubeMX自动生成4142运行测试Timer将程序编译链接,生成可执行代码,通过ST-Link仿真器下载到STM32F407ZET6核心板,连接示波器探头到PF9,观察波形为方波,频率为500Hz,符合题目要求,验证结果如图所示。图3-6TIM9产生1ms中断的实验结果后续任务Timer43请分别设置10ms、50ms、100ms定时中断,看小车能否正常行驶。请参照之前的任务,在嵌入式虚拟仿真平台绘制好电路,上传你编制的代码,仿真运行,如图3-7所示,能否看到PF9连接的LED灯闪烁。图3-7TIM9产生1ms中断的虚拟仿真平台验证44拓展任务Timer可以设置定时器TIM9每1s中断一次,在中断回调函数中,处理小时、分钟、秒的进位关系,通过串口输出“[时]-[分]-[秒]”。TIM9的PSC可设为(16800-1),ARR设为(10000-1),即可每1s中断一次。定时器中断回调函数中输出时间。请参照3.1.3,重新创建一个任务,按照设计思路,配置好定时器TIM9、USART1,生成基础工程,这里给出主函数main.c的参考代码,加粗显示的代码需要读者手动添加,串口重定向不再赘述。程序清单3-2:请在3.1.3的基础上修改定时器配置,增加串口输出,制作一个电子时钟,通过串口输出。设计思路:程序清单3-2:45
/*USERCODEBEGIN2*/__HAL_TIM_CLEAR_IT(&htim9,TIM_IT_UPDATE);HAL_TIM_Base_Start_IT(&htim9);
/*USERCODEEND2*/
/*USERCODEBEGINWHILE*/
while(1){
/*USERCODEENDWHILE*/
/*USERCODEBEGIN3*/}
/*USERCODEEND3*/}程序清单Timer/*Privatetypedef*//*USERCODEBEGINPTD*/typedef
struct{ uint8_thour; uint8_tminute; uint8_tsecond;}CLOCK_Ty
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋小学冀人版科学五年级上册第三单元 物质的变化《12 生锈与防锈》教学设计
- 社区医院的考试题及答案
- 2026年一建市政公用工程实务考前终极提分密卷试卷(含答案)
- 2026年一建民航工程全真模拟试卷及答案
- 2026年一建民航工程考前冲刺试卷及答案
- 2026年一建建筑实务考前提分冲刺特训试卷及答案
- 2026广东工厂面试题目及答案
- 2026后勤副职面试题及答案
- 美术小达人:色彩搭配难点攻克指南
- 人工智能在保险风险预测中的作用-第47篇
- 2026年企业上半年安全生产工作总结及计划
- 2026云南昆明官储粮经贸有限责任公司招聘3人笔试题库带答案详解(满分必刷)
- 2026年甘肃开放大学招聘事业编制工作人员笔试题库附完整答案详解(考点梳理)
- 2026年度新泰市市属国有企业公开招聘工作人员笔试参考题库及答案详解
- 2026年西安交通大学管理学院管理辅助人员招聘笔试参考题库及答案详解
- 2026年全国新高考1卷英语试卷(含答案及详解)
- 2026年留疆战士政策理解练习题及解析
- 《北京地区会计师事务所收费标准(试行)》文件
- 美容院消毒卫生工作制度
- 煤矿总工程师岗位职责及技术管理体系
- 少儿篮球教练员培训课件
评论
0/150
提交评论