频率与时间换算方法

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精确延时相关推荐

  1. keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

    前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...

  2. [野火]一种Cortex-M内核中的精确延时方法-ns级别-DWT

    看书 对书里面内容写文字 原创: 杰杰 物联网IoT开发 2018-11-10 https://mp.weixin.qq.com/s/1ruKZ2uJFaWqQn-tnGQp6A 前言 为什么要学习这 ...

  3. 一种Cortex-M内核中的精确延时方法

    本文介绍一种Cortex-M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 很多时候我们跑操作系统,就一般会占用一个硬件定时器--SysTick,而我们一般操作系统的时钟节拍一般是设置100 ...

  4. keil延时c语言程序设计,Keil C51程序设计中几种精确延时方法

    引言 单片机因具有体积小.功能强.成本低以及便于实现分布式控制而有非常广泛的应用领域[1].单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖.数据传输等操作都要在程序中插入一 ...

  5. c51语言1秒延时程序,KeilC51程序设计中几种精确延时方法

    实现延时通常有两种方法: 一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 1 使用定时器/计数器实现精确延时 ...

  6. 现代c++中实现精确延时方法总结

    程序中实现延时有很多种办法,但是有些不建议用.比如还在用sleep()或者空转计数的方式延时?要么移植性不好,要么不够精确且效率太低.这里总结下现代c++中推荐的一种实现精确延时的方法. 之前的一些用 ...

  7. 【软件】实现STM32软件精确时间的方法(附源码)

    欢迎关注[玩转单片机与嵌入式]公号,回复关键字获取更多免费视频和资料 回复[加群],[单片机].[STM32].[硬件知识].[硬件设计].[经典电路].[论文].[毕业设计].[3D封装库].[PC ...

  8. c语言流水灯定时器延时,实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)...

    /** ****************************************************************************** * @file main.c * ...

  9. 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)

    /** ****************************************************************************** * @file main.c * ...

最新文章

  1. linux下 为自己编写的程序 添加tab自动补全 功能
  2. train_test_split()
  3. 使用时间超级长的充电宝是啥样的?
  4. 你以为大厂的代码就不烂?看看这几个公众号怎么说!
  5. arrays中copyof_为什么阿里巴巴开发手册明确说明 Arrays.asList() 不能使用其修改方法?...
  6. 设计模式:桥接模式(Bridge Pattern)
  7. 《scikit-learn》随机森林之深入学习
  8. 微信域名屏蔽检测方法 微信域名检测接口的机制
  9. Open***服务器端配置文件server.conf的说明
  10. WinQSB的19个子系统简介
  11. Ins v2.5.30
  12. linux sipp 呼叫转移_★★★★盲转接业务的sipp脚本实现
  13. java中sql查重跟去重_SQL查重去重
  14. 第四章 SQL命令 ALTER VIEW
  15. CPN:Cascaded Pyramid Network for Multi-Person Pose Estimation_及CPN实现
  16. 出现Cannot find module 'xxx' 错误
  17. 《基于AI+大数据的医疗大健康最佳实践》---- AI 赋能临床试验受试者招募助力企业药物研发
  18. 链路聚合—3种模式 详细
  19. 基本运维及协同开发 :Linux基本使用
  20. 【第一届INT杯】 INT lpy的火柴游戏(大模拟)

热门文章

  1. com.google.zxing 二维码工具类
  2. 免费图片下载-海量图片一键批量下载免费
  3. go-micro使用Consul做服务发现的方法和原理
  4. 如何在线将XPS转换成PDF?
  5. 如何设计大型集团一体化IT运维系统
  6. android 打开日历功能,Android使用GridView实现日历的简单功能
  7. 论文检测前后需要做什么呢
  8. 最大公约数(GCD)算法与最小公倍数(LCM)算法-C++实现
  9. [目标检测]目标检测的评价指标MAP(上)
  10. 关键词下降应该怎么办?