STM32F1开发标准教程 课件 ch15实验14——输入捕获.pptx

STM32F1开发标准教程 课件 ch15实验14——输入捕获.pptx

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验14——输入捕获卓越工程师培养系列本书获深圳大学教材出版资助STM32F1开发标准教程 01实验内容 实验内容由于PAO与KEY3相连接编写程序实现以下功能:①当按下按键KEY3 时,捕获低电平持续的时间;②将按键KEY3低电平持续的时间转换为以毫秒为单位的数值;③将低电平的持续时间通过 UART1 发送到计算机;④通过串口助手查看按键 KEY3低电平持续的时间。将STM32的PAO(TIM5的CH1)配置为输入捕获模式 02实验原理 1.输入捕获实验流程图分析图15-1是输入捕获实验中断服务函数流程图。首先,使能 TIM5的溢出和下降沿(独立按键未按时为高电平,按下时为低电平)捕获中断。其次,当TIM5产生中断时,判断 TIM5是产生溢出中断还是边沿捕获中断。 1.输入捕获实验流程图分析如果是下降沿捕获中断,即检测到按键按下,则将s_iCaptureSts(用于存储溢出次数)、s iCaptureVal(用于存储捕获值)和TIM5→CNT均清零同时将s_iCaptureSts[6]置为1,标记成功捕获到下降沿,然后,将TIM5设置为上升沿捕获再清除中断标志位。如果是上升沿捕获中断,即检测到按键松开,则将 siCaptureSts[7]置为1,标记成功捕获到上升沿将TIM5-CCR1的值读取到s_iCaptureVal,然后,将TIM5设置为下降沿捕获,再清除中断标志位如果是 TIM5溢出中断,则判断s_iCaptureSts[6]是否为1,也就是判断是否成功捕获到下降沿,如果捕获到下降沿,进一步判断是否达到最大溢出值(TIM5从0计数到OXFFFF 溢出一次,即计数65536 次溢出一次,计数单位为1us,由于本实验最大溢出次数是 0x3F+1,即十进制的 64,因此,最大溢出值为 64X65536X1us4194304us=4.194s)。如果达到最大溢出值,则强制标记成功捕获到上升沿,并将捕获值设置为0xFFFF,也就是按键按下时间小于 4.194s,按照实际时间通过串口助手打印输出,按键按下时间如果大于或等于4.194s,则强制通过串口助手打印4.194s,如果未达到最大溢出值(0x3F即十进制的63),则siCaptureSts 执行加1操作,再清除中断标志位。清除完中断标志位,当产生中断时,则继续判断TIM5 是产生溢出中断,还是产生边沿捕获中断。 1.输入捕获实验流程图分析图15-2是输入捕获实验应用层流程图。首先,判断是否产生8ms 溢出,如果产生10m溢出,则判断s_iCaptureSts[7]是否为 1,即判断是否成功捕获到了上升沿,否则续判断是否产生 10ms溢出。如果s_CaptureSts[7]为 1,即成功捕获到上升沿,则取出s_iCaptureSt的低6位计数器的值,得到溢出次数,然后,溢出次数乘以 65536,当然,还需要加上最后次读取到的TIM5-CCR1的值,得到以s 为单位的按键按下时间值,再将其转换为以ms为单位,最后通过串口助手打印出以ms 为单位的按键按下时间。如果siCaptureSts[7]为0即没有成功捕获到上升沿,则继续判断是否产生10ms溢出。注意,captureVal=*pCapVal。 2.通用定时器部分寄存器TIMx_CCMR1的结构偏移地址和复位值如图15-3所示对部分位的解释说明如表15-1所示。1.捕获/比较模式寄存器1(TIMx_CCMR1) 2.通用定时器部分寄存器TIMx_CCER的结构偏移地址和复位值如图15-4所示,对部分位的解释说明如表15-2所示。2.捕获/比较使能存器(TIMX_CCER) 2.通用定时器部分寄存器TIMx_CCR1的结构偏移地址和复位值如图15-5所对部分位的解释说明如表15-3所示。3.捕获/比较寄存器1(TIMx_CCR1) 3.通用定时器部分固件库函数TIMI_CInit函数的功能是根据TIM_ICIitStruct 中指定的参数初始化外设TIMx,通过调用TIx_Config、TIM_ SetICxPrescaler (x=1,..,4)来实现。具体描述如表15-4 所示。1.TIM_ICInit 3.通用定时器部分固件库函数TIMIC_InitTypeDef结构体定义在stm32f10x timh文件中,内容如下:1.TIM_ICInit 3.通用定时器部分固件库函数参数TIM_Channel用于选择通道,可取值如表15-5所示。1.TIM_ICInit 3.通用定时器部分固件库函数参数TIMI_CPolarity用于选择输入捕获边沿模式,可取值如表15-6所示。1.TIM_ICInit 3.通用定时器部分固件库函数参数TIMI_CSelection用于选择引脚与寄存器对应关系,可取值如表15-7所示。1.TIM_

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档