stm32之SysTick定时器
2016-03-05 16:54
323 查看
在做项目用到时间片轮询架构 故用SysTick做中断。芯片型号为 stm32f051c8t6
一.我们先看f0的sysTick的时钟来源以及配置。
从数据手册可以看到 systick 来源于 HCLK 看下图
是 HCLK还是HCLK/8 是由寄存器 CTRL的第三位决定的 看下图
我们查看core_cm0.h中的 SysTick_Config函数可知 时钟选择为 HCLK 看下图
二、那么HCLK的时钟又是多少呢?(这里粗略讲一下,详细的可以看我以前写的 ”STM32F107(互联网型)外部晶振用25MHZ
而STM32F103却用8MHZ的原因及其时钟来源分析“ 这篇文章)
在 SetSysClock()函数我们可以看到:
那么 SYSCLK时钟又是多少呢? 我们结合时钟分配图可以算出 48MHZ (我这里采用的是 内部晶振8M)
三、因此我们systick的时钟为48MHZ 那么怎么定时间呢?看数据手册可以知道 LOAD寄存器决定中断的时间:
48MHZ时钟 计数 48次 就是 1us
我这里计数 48000 那么就是 1ms 中断一次!!
一.我们先看f0的sysTick的时钟来源以及配置。
从数据手册可以看到 systick 来源于 HCLK 看下图
是 HCLK还是HCLK/8 是由寄存器 CTRL的第三位决定的 看下图
我们查看core_cm0.h中的 SysTick_Config函数可知 时钟选择为 HCLK 看下图
二、那么HCLK的时钟又是多少呢?(这里粗略讲一下,详细的可以看我以前写的 ”STM32F107(互联网型)外部晶振用25MHZ
而STM32F103却用8MHZ的原因及其时钟来源分析“ 这篇文章)
在 SetSysClock()函数我们可以看到:
那么 SYSCLK时钟又是多少呢? 我们结合时钟分配图可以算出 48MHZ (我这里采用的是 内部晶振8M)
三、因此我们systick的时钟为48MHZ 那么怎么定时间呢?看数据手册可以知道 LOAD寄存器决定中断的时间:
48MHZ时钟 计数 48次 就是 1us
我这里计数 48000 那么就是 1ms 中断一次!!
相关文章推荐
- Android的IPC机制Binder的各个部分 : Reference 3#
- UVA 10518 How Many Calls?
- Java - Socket example: EchoClient and EchoServer
- 关于Android中textView的背景设置
- cocos2d-x做黑白棋(悔棋功能)
- MongoDB 操作手冊CRUD插入
- 数据分析系统DIY3/3:本地64位WIN7+matlab 2012b訪问VMware CentOS7+MariaDB
- Android 学习资料收集
- surfaceView的使用实例之虐心小游戏
- Android5.1应用统计源码分析
- adb基本命令和Logcat基本命令
- Android Binder 机制(超级详尽): reference 1#
- Android深入浅出之Binder机制: Reference 2#
- 关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
- VB.net版机房收费-ConfigurationManager类引用方法
- 链路层
- 线程之间的数据传输之AsyncTask
- 搬瓦工安装Netspeeder加速教程
- 设置eclipse编码方式
- 如何用八进制和十六进制来表示整形数据