频率与时间换算方法-stm精确延时
频率与时间换算方法
1.频率与时间的换算需要根据芯片型号计算
如STM32F0芯片的频率为48M
那么如果需要延时1微妙则可以
首先进行8分频得到6M 6M=6*1000KB=6*1000*1000Bit=6000000个数 这是每秒计的数
那么1ms则计6000个数 1us则计6次数
如果要用systick 做延时函数,那么systick重装载值则为6
如STM32F1芯片的频率为72M
那么如果需要延时1微妙则可以
首先进行8分频得到9M 9M=9*1000KB=9*1000*1000Bit=9000000个数 这是每秒计的数
那么1ms则计9000个数 1us则计9次数
如果要用systick 做延时函数,那么systick重装载值则为9
2.精准微妙延时示例
void delay_us(uint32_t nus) {uint32_t temp;SysTick->LOAD = 9*nus;//这里是F1系列参数,其他系列需要更改系数。SysTick->VAL=0X00;//清空计数器SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源do{ temp=SysTick->CTRL;//读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器 }
3.精准毫妙延时示例
void delay_us(uint32_t nus) {uint32_t temp;SysTick->LOAD = 9000*nus;//这里是F1系列参数,其他系列需要更改系数。SysTick->VAL=0X00;//清空计数器SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源do{ temp=SysTick->CTRL;//读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器 }
频率与时间换算方法-stm精确延时相关推荐
- keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法
前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...
- [野火]一种Cortex-M内核中的精确延时方法-ns级别-DWT
看书 对书里面内容写文字 原创: 杰杰 物联网IoT开发 2018-11-10 https://mp.weixin.qq.com/s/1ruKZ2uJFaWqQn-tnGQp6A 前言 为什么要学习这 ...
- 一种Cortex-M内核中的精确延时方法
本文介绍一种Cortex-M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 很多时候我们跑操作系统,就一般会占用一个硬件定时器--SysTick,而我们一般操作系统的时钟节拍一般是设置100 ...
- keil延时c语言程序设计,Keil C51程序设计中几种精确延时方法
引言 单片机因具有体积小.功能强.成本低以及便于实现分布式控制而有非常广泛的应用领域[1].单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖.数据传输等操作都要在程序中插入一 ...
- c51语言1秒延时程序,KeilC51程序设计中几种精确延时方法
实现延时通常有两种方法: 一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 1 使用定时器/计数器实现精确延时 ...
- 现代c++中实现精确延时方法总结
程序中实现延时有很多种办法,但是有些不建议用.比如还在用sleep()或者空转计数的方式延时?要么移植性不好,要么不够精确且效率太低.这里总结下现代c++中推荐的一种实现精确延时的方法. 之前的一些用 ...
- 【软件】实现STM32软件精确时间的方法(附源码)
欢迎关注[玩转单片机与嵌入式]公号,回复关键字获取更多免费视频和资料 回复[加群],[单片机].[STM32].[硬件知识].[硬件设计].[经典电路].[论文].[毕业设计].[3D封装库].[PC ...
- c语言流水灯定时器延时,实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)...
/** ****************************************************************************** * @file main.c * ...
- 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)
/** ****************************************************************************** * @file main.c * ...
最新文章
- linux下 为自己编写的程序 添加tab自动补全 功能
- train_test_split()
- 使用时间超级长的充电宝是啥样的?
- 你以为大厂的代码就不烂?看看这几个公众号怎么说!
- arrays中copyof_为什么阿里巴巴开发手册明确说明 Arrays.asList() 不能使用其修改方法?...
- 设计模式:桥接模式(Bridge Pattern)
- 《scikit-learn》随机森林之深入学习
- 微信域名屏蔽检测方法 微信域名检测接口的机制
- Open***服务器端配置文件server.conf的说明
- WinQSB的19个子系统简介
- Ins v2.5.30
- linux sipp 呼叫转移_★★★★盲转接业务的sipp脚本实现
- java中sql查重跟去重_SQL查重去重
- 第四章 SQL命令 ALTER VIEW
- CPN:Cascaded Pyramid Network for Multi-Person Pose Estimation_及CPN实现
- 出现Cannot find module 'xxx' 错误
- 《基于AI+大数据的医疗大健康最佳实践》---- AI 赋能临床试验受试者招募助力企业药物研发
- 链路聚合—3种模式 详细
- 基本运维及协同开发 :Linux基本使用
- 【第一届INT杯】 INT lpy的火柴游戏(大模拟)