用stm32的systick时钟做延时函数

用stm32的systick时钟做延时函数

ID:13336075

大小:82.50 KB

页数:3页

时间:2018-07-22

用stm32的systick时钟做延时函数_第1页
用stm32的systick时钟做延时函数_第2页
用stm32的systick时钟做延时函数_第3页
资源描述:

《用stm32的systick时钟做延时函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用STM32的SysTick时钟做延时函数的学习笔记       SysTick 就是一个定时器而已,只是它放在了NVIC(嵌套中断控制器)中,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断)。       滴答中断:操作系统进行运转的时候,也会有“心跳”。它会根据“心跳”的节拍来工作,把整个时间段分成很多小小的时间片,每个任务每次只能运行一个“时间片”的时间长度就得退出给别的任务运行,这样可以确保任何一个任务都不会霸占整个系统不放。这个心跳,可以通过定时器来周期性触发,而这个定时器就是systick。很明显,这个“心跳”是不允许任何人来随意

2、地访问和修改的。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息。     systick 的使用有四个寄存器:              STK_CSR, 0xE000E010-- 控制寄存器              STK_LOAD,0xE000E014 -- 重载寄存器              STK_VAL,0xE000E018 -- 当前值寄存器              STK_CALRB,0xE000E01C -- 校准值寄存器1、STK_CSR控制寄存器:寄存器内有4个位具有意义      第0 位:ENABLE,

3、Systick使能位(0:关闭Systick 功能;1:开启Systick功能)      第1 位:TICKINT,Systick中断使能位(0:关闭Systick 中断;1:开启Systick 中断)      第2 位:CLKSOURCE,Systick时钟源选择(0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick 时钟)      第3 位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零。2、STK_LOAD 重载寄存器 

4、     Systick 是一个递减的定时器,当定时器递减至0 时,重载寄存器中的值就 会被重装载,继续开始递减。STK_LOAD 重载寄存器是个24 位的寄存器最大计数0xFFFFFF。3、STK_VAL当前值寄存器     也是个24 位的寄存器,读取时返回当前倒计数的值,写它则使之清零,同时还会清除在SysTick 控制及状态寄存器中的COUNTFLAG 标志。4、STK_CALRB 校准值寄存器    位31 NOREF :1=没有外部参考时钟(STCLK 不可用)0=外部参考时钟可用   位30 SKEW:1=校准值不是准确的1ms 0=校准值是

5、准确的1ms具体如图所示:例程如下:/***************************************************************                        SysTick四个寄存器的地址入口定义****************************************************************/#define SysTick_Tenms    (*((volatile unsigned long *)0xE000E01C))  //要定义成volatile类型#define

6、 SysTick_Current   (*((volatile unsigned long *)0xE000E018)) #define SysTick_Reload    (*((volatile unsigned long *)0xE000E014)) #define SysTick_CSR        (*((volatile unsigned long *)0xE000E010)) /***************************************************************                   

7、     SysTick的配置****************************************************************/void SysTick_Configuration(void) {    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//置AHB 时钟为SysTick 时钟,72MHZ   SysTick_Current=0; //当前值寄存器    SysTick_CSR=0x06;// HCLK作为Systick时钟,Systick中断使能位}/*****

8、*********************************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。