19.7HAL-定时器中断的使能失能函数以及中断的执行流程_第1页
19.7HAL-定时器中断的使能失能函数以及中断的执行流程_第2页
19.7HAL-定时器中断的使能失能函数以及中断的执行流程_第3页
19.7HAL-定时器中断的使能失能函数以及中断的执行流程_第4页
19.7HAL-定时器中断的使能失能函数以及中断的执行流程_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HAL_中断方式开启/关闭定时器及定时器中断的执行过程1STM32程序设计案例教程电子工业出版社欧启标主要内容一、定时器中断方式启动和关闭函数二、定时器中断的执行过程一、定时器中断方式启动和关闭函数1、定时器中断方式启动HAL_TIM_Base_Start_IT的执行过程。HAL_StatusTypeDefHAL_TIM_Base_Start_IT(TIM_HandleTypeDef*htim){uint32_ttmpsmcr;assert_param(IS_TIM_INSTANCE(htim->Instance));/*(1)检查函数参数*/

__HAL_TIM_ENABLE_IT(htim,TIM_IT_UPDATE);/*(2)使能定时器的溢出中断*/tmpsmcr=htim->Instance->SMCR&TIM_SMCR_SMS;if(!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))/*(3)判断是不是触发模式启动定时器*/{

__HAL_TIM_ENABLE(htim);/*(4)启动定时器*/}returnHAL_OK;/*(5)溢出中断使能和启动定时器后返回OK状态*/}2、定时器中断方式关闭中断函数HAL_TIM_Base_Stop_IT执行过程。HAL_StatusTypeDefHAL_TIM_Base_Stop_IT(TIM_HandleTypeDef*htim){assert_param(IS_TIM_INSTANCE(htim->Instance));__HAL_TIM_DISABLE_IT(htim,TIM_IT_UPDATE);/*(1)关闭定时器的溢出中断*/

__HAL_TIM_DISABLE(htim);/*(2)关闭定时器外设*/returnHAL_OK;/*Returnfunctionstatus*/}

当计数器发生上溢或下溢事件时,如果使能了对应的溢出中断,则定时器中断发生。此时如果设置有中断服务函数,则中断获得响应后,处理器将去执行中断服务函数。以TIM3的溢出中断为例,定时器执行中断函数的流程如下:

1.寻找TIM3中断入口地址。经过响应中断和优先级排序后,中断系统跳到文件stm32f407xx.s中寻找中断文件入口地址,该地址为TIM3_IRQHandler。二、定时器中断的执行过程2.执行stm32f4xx_it.c中TIM3的中断函数TIM3_IRQHandler,如图9-16所示。3.执行stm32f4xx_hal_tim.c中的HAL库的通用中断处理函数HAL_TIM_IRQHandler。在HAL_TIM_IRQHandler中处理溢出中断的代码如下(1) if(__HAL_TIM_GET_FLAG(htim,TIM_FLAG_UPDATE)!=RESET) {(2) if(__HAL_TIM_GET_IT_SOURCE(htim,TIM_IT_UPDATE)!=RESET) {(3) __HAL_TIM_CLEAR_IT(htim,TIM_IT_UPDATE); #if(USE_HAL_TIM_REGISTER_CALLBACKS==1)

htim->PeriodElapsedCallback(htim); #else(4)

HAL_TIM_PeriodElapsedCallback(htim); #endif/*USE_HAL_TIM_REGISTER_CALLBACKS*/ } }其中语句(1)使用宏__HAL_TIM_GET_FLAG()获取状态寄存器的溢出位,并判断其是不是不等于0(RESET),如果不等于说明发生了溢出。发生溢出后执行语句(2),通过宏__HAL_TIM_GET_IT_SOURCE到定时器的中断使能寄存器DIER中判断溢出中断是否开启,如果开启,说明当前中断是溢出中断,接下来执行语句(3)清除中断状态位以便下一次的中断到来的设置,然后执行语句(4)调用周期运行回调函数HAL_TIM_PeriodElapsedCallback()。注意,与串口中断的执行不同,HAL库中在执行定时器周期性中断回调函数之前并不将定时器中断进行关闭(而只是清除标志位以便能继续接收下一次中断而已),然后才执行中断回调函数。4.执行回调函数HAL_TIM_PeriodElapsedCallback()。该函数由用户自己根据中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论