关于【正点原子STM32F1开发指南】第五章delay.c文件里fac_us=SystemCoreClock/8000000的保姆级详解
在正点原子的《STM32F1开发指南-库函数版本_V3.3》第五章 SYSTEM文件夹介绍的5.1中对于系统定时器的讲解中出现了如下内容。
这一行:
fac_us=SystemCoreClock/8000000
讲解的很笼统,对于初学者来说不易理解,经过我查阅众多资料详解如下:
STM32F103的时钟频率是72MHz,PLL锁相环(72MHz)或者HSI(72MHz)后得到的SYSCLK再经过八分频后得来的Cortex系统时钟(72MHz/8=9MHz),如下图所示:
我们以delay_nus函数为例分析,代码如下(正点原子的任何一个例程都包括这个代码,在SYSTEM文件夹下的delay.c中)
//延时初始化函数
void delay_init()
{SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8fac_us=SystemCoreClock/8000000; //为系统时钟的1/8 fac_ms=(u16)fac_us*1000; //非OS下,代表每个ms需要的systick时钟数
}
//延时nus
//nus为要延时的us数.
void delay_us(u32 nus)
{ u32 temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器SysTick->VAL =0X00; //清空计数器
}
其中的
fac_us=SystemCoreClock/8000000
就是我们这次的重点。SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);函数就是选择时钟来源函数,在这里SysTick 的时钟源自 HCLK 的 8 分频,假设我们外部晶振为 8MHz然后倍频到 72MHz ,那么 SysTick 的时钟即为 :
SysTick时钟频率 = SystemCoreClock / 8=72Mhz / 8=9MHz=9 000 000Hz
我们都知道周期T和频率F是倒数关系,所以SysTick的一个周期为
[1/(SystemCoreClock/8)]=1 / 9 000 000S=1 / 9us
因为1s=1000 000us,那么反过来
所以1us内SysTick需要计数的次数就是
关于【正点原子STM32F1开发指南】第五章delay.c文件里fac_us=SystemCoreClock/8000000的保姆级详解相关推荐
- 【正点原子MP157连载】 第五章 STM32MP1启动详解-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 【正点原子STM32连载】第五章 STM32基础知识入门 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
- 【正点原子Linux连载】第五章 文件属性与目录-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 正点原子FPGA开发指南——数码管动态显示
数码管是将若干发光二极管按一定图形排列并封装在一起的一种数码显示器件.常见的数码管如下图所示: 这种数码管主要被称为八段数码管或8字形数码管,可用来显示小数点.数字0~9,和英文字母A~F. 我们的目 ...
- 【正点原子Linux连载】第五章 RKMedia编译和使用 摘自【正点原子】ATK-DLRV1126系统开发手册
第五章 RKMedia编译和使用 5.1 RKMedia编译 Rkmedia是RK官方封装一层简易的API,把RGA.MPP.RKNN等等这些接口封装成高级的接口.在SDK官方的源码目录下,运行以下命 ...
- 32 串口波特率_「正点原子FPGA连载」第五章串口中断实验
1)实验平台:正点原子达芬奇FPGA开发板 2) 摘自[正点原子]达芬奇之Microblaze 开发指南 3)购买链接:https://detail.tmall.com/item.htm?id=624 ...
- 05.ThreeJs开发指南-第五章-几何体
第五章 学习使用几何体 二维几何体: 一.PlaneGeometry:平面 var plane = new THREE.PlaneGeometry(width,height,widthSegments ...
- ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解...
感谢一路走来默默陪伴和支持的你~~~ ----------------欢迎来访,拒绝转载---------------- 关于GP模型的制作请点我! 一.GP发布 ArcGIS Desktop可以作为 ...
- 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)
基于正点原子的IMX6ULL开发板的智能车载系统(Qt) 提示:该项目借鉴了不少大佬的代码,我没有自己造轮子(代码在文章末尾,同时附上参考链接 ) 本人其他项目链接基于linux的智能仓储项目 基于Q ...
- 【正点原子STM32连载】第五十一章 视频播放器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
最新文章
- centos7 安装telnet服务
- 不出家门也能喝上原汁原味的泰国国汤——冬阴功汤
- objective-c 中字符串与日期相互转换
- bilateral filter双边滤波器的通俗理解
- python php 网站_python php网站
- 乐观锁与悲观锁及其实现
- JAVA08 多态
- 机器人也开始怕疼了?科学家开发无需人工干预即可自愈的机器人
- 换教室(NOIP2016提高组Day1T3)
- 推荐一款ORM工具 FOR ADOBE AIR
- 为什么时间是60进制的啊? ? ?
- 关于Initializing Spring root WebApplicationContext解决方法
- 利用python自动解析摩斯电码音频文件
- 身份证到期,异地换领流程记录
- 手机号码短信验证注册
- vue仿美团饿了么--底部导航公共组件
- css3的含义是什么
- Oracle分区表管理
- 如何选择我的搜索引擎关键字?
- PDManer支持的数据库系统
热门文章
- 物流包装循环使用管理要求团体标准暨“可循环和绿色快递包装应用研究”项目专家企业调研研讨会圆满落幕
- Podfile语法参考(译)
- FileNotFoundError: [Errno 2] No such file or directory: ‘./train/hazy/hazy‘
- 【FPGA】四、按键消抖
- 计算机读不了硬盘分区,修复移动硬盘分区故障和无法识别计算机
- python开发问卷系统_哪个开源的问卷调查系统最好用?
- 《人性的弱点》(戴尔-卡耐基)读书小结
- Linux配置文件-limits.conf
- 解决waiting for all target devices to come online卡住不动、长时间不加载的情况
- 新闻接口调用之新浪滚动新闻