STM32F1开发标准教程 课件 ch08实验7——SysTick.pptx

STM32F1开发标准教程 课件 ch08实验7——SysTick.pptx

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验7——SysTick卓越工程师培养系列本书获深圳大学教材出版资助STM32F1开发标准教程 01实验内容 实验内容基于STM32核心板设计一个SysTick实验,内容包括:①新增SsTick 模块,该模块应包括3个API函数,分别是初始化 SysTick模块函数InitSysTick、微秒延时函数 DelayNus和毫秒延时函数 DelayNms;②在InitSysTick函数中可以调用 SysTick_Config 函数对 SysTick 的中断间隔进行调整;③微秒延时函数DelayNus和毫秒延时函数 DelayNms,至少有一个需要通过SsTick_Handler 中断服务函数实现;④在Main模块中调用IitSysTick 函数对 SysTick 模块进行初始化,调用DelayNms函数和DelayNus函数控制LED1和LED2交替闪烁,验证两个函数是否正确。学习SysTick功能框图及相关寄存器和固件库函数 02实验原理 1.SysTick功能框图如图8-1所示是SysTick 功能框图,下面依次介绍SysTick 时钟当前计数值寄存器和重装载数值寄存器。 1.SysTick功能框图AHB时钟或经过8分频的AHB 时钟作为 Cortex系统时钟,该时钟同时也是SysTick的时钟源。由于本书中所有实验的AHB 时钟频率均配置为72MHz,因此,最终的 SysTick时钟频率同样也是72MHz,或72MHz的8分频,即9MHZ,本书中所有实验的Cortex 系统时钟频率为72MHz,同样,SysTick 时钟频率也为72MHz。1.SysTick 时钟 1.SysTick功能框图SysTick 时钟(STK_CLK)作为 SysTick 计数器的时钟输入,SysTick 计数器是一个24位的递减计数器,对SysTick 时钟进行计数,每次计数的时间为1/STK_CLK,计数值保存于当前计数值寄存器(STK_VAL)。对于本实验而言,由于STK_CLK的频率为72MHz,因此SysTick计数器每次计数时间为1/72ps。当STK_VAL计数至0时STK_CTRL的COUNTFLAG会被置为 1,如果 STK_CTRL的 TICKINT为1,则产生 SysTick 异常请求;相反,如果STK_CTRL的TICKINT为0,则不产生Sys_Tick异常请求。2.当前计数值寄存器 1.SysTick功能框图SysTick计数器对STK_CLK时钟进行递减计数那么到底从哪个值开始计数到0呢?答案是重装载值STK_LOAD当SysTick 计数器计数到0时,由硬件自动将STK_LOAD中的值加载到STK_VAL,重新启动递减计数。本实验的STK_LOAD1000,因此,产生SysTick异常请求间隔为(1/72μs)x1000)=1000μs,即1ms产生一次SsTick异常请求。3.重装载数值寄存器 2.SysTick实验流程图分析图8-2是SysTick模块初始化与中断服务函数流程图。首先,通过IitSysTick 函数初始化SysTick,包括更新 SysTick 重装载数值存清除SysTick计数器、选择AHB 时钟作SysTick 时钟、使能异常请求,并使能SysTick,这些操作都是在SysTick Confg 函数中完成的。其次,判断SysTick 计数器是否计数到0,如果不为0,继续判断SvsTick 计数器是否计数到0,如果计数到0,则产生 SysTick 异常请求,并执行 SysTick Handler 中断服务函数SysTick Handler 函数主要是判断s iTimDelayCnt 是否为0如果为0则退出SysTick Handle函数,否则,siTimDelayCnt 执行递减操作。 2.SysTick实验流程图分析图8-3是DelayNms函数流程图首先DelayNms函数将参数nms赋值给siTimDelavCntsiTimDelayCnt是SysTick 模块的内部变量,该变量在SysTick Handler 中断服务函数中执行递减操作(在SysTick 实验中,s iTimDelayCnt 每1ms 执行一次减1操作)。其次,判siTimDelavCnt是否为0如果为0则退出DelavNms函数,否则继续判断siTimDelavCn是否为0。这样,siTimDelaCnt就从nms递减到0,如果nms为5,就可以实现5ms延时。 2.SysTick实验流程图分析图8-4是DelayNus 函数流程图。微秒级的延时与毫秒级的延时实现不同,微秒级的延时是通过一个while循环语内嵌一个for 循环和一个siTimCnt变量递减语实现的,for循语句和

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档