- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第9章项目4-按键控制LED闪烁频率滴答定时器
本章内容Systick定时器基础知识Systick相关寄存器Systick库函数Systick的应用1
1.Systick定时器基础知识——Systick定时器是什么Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。2
Systick定时器就是系统滴答定时器,一个24?位的倒计数定时器,计到0?时,将从RELOAD?寄存器中自动重装载定时初值。只要不把它在SysTick?控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。Systick中断的优先级也可以设置。1.Systick定时器基础知识——Systick定时器是什么3
2.Systick相关寄存器——Systick相关寄存器SysTick定时器有4个可编程寄存器???????????????????????
???????????????????4名称功能CTRLSysTick?控制和状态寄存器LOADSysTick?自动重装载除值寄存器VALSysTick?当前值寄存器CALIBSysTick?校准值寄存器
SysTick?控制和状态寄存器-CTRL对于STM32,0:外部时钟源是HCLK(AHB总线时钟)的1/81:内核时钟是HCLK时钟配置函数:SysTick_CLKSourceConfig();2.Systick相关寄存器——Systick相关寄存器5
SysTick?重装载数值寄存器-LOADSysTick?当前值寄存器-VAL2.Systick相关寄存器——Systick相关寄存器6
3.Systick相关库函数——Systick库函数固件库中的Systick相关函数:SysTick_CLKSourceConfig()//Systick时钟源选择misc.c文件中Systick中断服务函数:voidSysTick_Handler(void);7
4.Systick的应用——Delay延时函数用查询方式实现delay延时voiddelay_init(){SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟:HCLK/8,9MHzfac_us=SystemCoreClock/8000000; //延时1us计数值fac_ms=(u16)fac_us*1000; //延时1ms计数值} voiddelay_ms(u16n){ u32temp; SysTick-LOAD=(u32)n*fac_ms; SysTick-VAL=0x00; SysTick-CTRL|=SysTick_CTRL_ENABLE_Msk; do { temp=SysTick-CTRL; }while((temp0x01)!(temp(116))); SysTick-CTRL=~SysTick_CTRL_ENABLE_Msk;SysTick-VAL=0X00; }8
Cortex-M系统中,Systick代码可以通用。如果使用中发现延时不一致,问题一般都是因为不同内核时钟不一样而已。修改fac_us、fac_ms值即可。4.Systick的应用——Delay延时函数9
10谢谢观看!
文档评论(0)