STM32F1学习-SysTick定时器
2016-07-20 10:34
113 查看
SysTick定时器常用来做延时,或者用实时系统的心跳时钟。这样可以节省MCU资源,不浪费定时器。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。
4个SysTick寄存器
CTRL SysTick 控制和状态寄存器 LOAD
SysTick 自动重装载除值寄存器
VAL SysTick 当前值寄存器 CALIB
SysTick 校准值寄存器
SysTick控制及状态寄存器
SysTick重装载数值寄存器
SysTick当前数值寄存器
SysTick校准数值寄存器
固件库中的Systick相关函数:
SysTick_CLKSourceConfig() //Systick时钟源选择
SysTick_Config(uint32_t ticks) //初始化systick,时钟为HCLK,并开启中断
Systick中断服务函数:
void SysTick_Handler(void);
用Systick写延时函数的步骤:
第一步:初始化函数中,配置Systick的工作频率。通过寄存器CTRL
第二步:在延时函数中,计算出在配置的工作频率下1us或者1ms的震荡n次。(函数中需要多少us或者多少ms,直接乘以n次)。
第三步:把VAL的值清零。清零之后,VAL的值重新加载。
第四部:使能Systick,通过寄存器CTRL。
第五步:通过判断Systick->COUNTFLAG 寄存器判断定时是否到了。
第六步:定时时间到了,那就关闭定时器,同时清空Systick->VAL。
通过一个简单的函数来理解。
@kexuexyz
摘自:
可以很好的理解。
再举一个完整的函数
4个SysTick寄存器
CTRL SysTick 控制和状态寄存器 LOAD
SysTick 自动重装载除值寄存器
VAL SysTick 当前值寄存器 CALIB
SysTick 校准值寄存器
SysTick控制及状态寄存器
SysTick重装载数值寄存器
SysTick当前数值寄存器
SysTick校准数值寄存器
固件库中的Systick相关函数:
SysTick_CLKSourceConfig() //Systick时钟源选择
SysTick_Config(uint32_t ticks) //初始化systick,时钟为HCLK,并开启中断
Systick中断服务函数:
void SysTick_Handler(void);
用Systick写延时函数的步骤:
第一步:初始化函数中,配置Systick的工作频率。通过寄存器CTRL
第二步:在延时函数中,计算出在配置的工作频率下1us或者1ms的震荡n次。(函数中需要多少us或者多少ms,直接乘以n次)。
第三步:把VAL的值清零。清零之后,VAL的值重新加载。
第四部:使能Systick,通过寄存器CTRL。
第五步:通过判断Systick->COUNTFLAG 寄存器判断定时是否到了。
第六步:定时时间到了,那就关闭定时器,同时清空Systick->VAL。
通过一个简单的函数来理解。
@kexuexyz
摘自:
可以很好的理解。
再举一个完整的函数
相关文章推荐
- textview动态设置 DrableLeft 以及改变图片大小
- ThinkPHP使用详解
- Codeforces Round #363 (Div. 2) B. One Bomb(思维题目)
- javaScript给元素添加多个class的简单实现
- Intent 传递的类型总结
- Hadoop参数汇总
- iOS开发之Masonry框架源码深度解析
- 性能测试总结(一)---基础理论篇
- hdu 5727 Necklace dfs+二分图匹配
- mong 备份和恢复
- mong 备份和恢复
- CentOS 6 使用 yum 安装MongoDB及服务器端配置
- Java JNI初探
- codeforces #363a Launch of Collider
- Linux基础网络配置以及常用的网络命令
- 字符串匹配算法
- SSH 部分jar包的作用
- [置顶] UITableView刷新指定的section和cell
- 2016 Multi-University Training Contest 1----解题报告
- Codeforces Round #363 (Div. 2) (A,B,C)