总结一下STM8L101F3P6工作在16MHz下,利用死循环、中断等不同写法的微秒级延时函数精度的情况。

一、死循环空指令的写法,延时函数程序如下:

/******************************************************************************/
/* Function name:       Delay_ms                                              */
/* Descriptions:        毫秒级延时函数函数,16MHz时钟                         */
/* input parameters:    nCount延时时间                                        */
/* output parameters:   无                                                    */
/* Returned value:      无                                                    */
/******************************************************************************/
void Delay_ms(unsigned int nCount)
{uint16_t i=0,j=0;;for(i=0;i<nCount;i++){for(j=0;j<1142;j++){;}}
}

调用函数如下:

/******************************************************************************/
/* Function name:       main                                                  */
/* Descriptions:        主函数                                                */
/* input parameters:    无                                                    */
/* output parameters:   无                                                    */
/* Returned value:      无                                                    */
/******************************************************************************/
main()
{BoardInit();enableInterrupts();while(1){GPIO_ResetBits(GPIOC,GPIO_Pin_2);Delay_ms(1);GPIO_SetBits(GPIOC,GPIO_Pin_2);Delay_ms(1);}
}

Delay_ms(1);大约延时1毫秒

Delay_ms(10);大约延时9.9835毫秒

Delay_ms(100);大约延时99.74毫秒

Delay_ms(1000);大约延时997.05毫秒

可以看到,这种利用死循环来写的毫秒级的延时,与微秒级的延时来比,相对来说,精度已经提高了不少。但是要知道,这种死循环的延时是与代码量也有关系的,在代码变多的情况下,如果想提高ms级的精度,要适当的调整循环值,并且要用示波器进行观察。这种方法的缺点就不多说了,CPU占用率太高,效率低下,浪费能源。

Delay_ms(1)的波形:

Delay_ms(10)的波形:

Delay_ms(100)的波形:

Delay_ms(1000)的波形:

20140627-STM8L101F3P6关于毫秒级延时函数不同写法的波形相关推荐

  1. 20140627-STM8L101F3P6关于微秒级延时函数不同写法的波形

    总结一下STM8L101F3P6工作在16MHz下,利用死循环.中断等不同写法的微秒级延时函数精度的情况. 一.死循环空指令的写法,延时函数程序如下: /*********************** ...

  2. ms和us级延时函数的实现

    ms和us级延时函数的实现 2020 Sept. 8th 用sysTick实现延时 寄存器说明参考火哥(膜拜)的这篇博客:第18章 SysTick-系统定时器 用中断输出: //调用core_cmX. ...

  3. HAL库-us级延时函数实现

    已有的HAL_Delay() __weak void HAL_Delay(__IO uint32_t Delay) {uint32_t tickstart = 0U;tickstart = HAL_G ...

  4. 手摸手教你使用srs服务搭建毫秒级延时直播

    之所以要搭建一个在公网环境下一对一毫秒级延时的直播, 就是为了做一个不限遥控距离的小车, 使用安卓手机基于aoa协议+4g/5g实现, 理论上只要电池有电(可采用太阳能方案)和有4g/5g信号的地方, ...

  5. stm32实现Systick的毫秒级延时和微妙级延时

    学习目标: stm32实现Systick的毫秒级延时和微妙级延时 学习内容: 1.Systick 工作原理 Systick(系统定时器)是ARM Cortex M3/M4 内核的一个外设,因为所有的C ...

  6. python毫秒级延时

    一.毫秒延时 近期有一个ms级别延时的需求,实际测试了一下, 环境:win7 64位,python2.7.13 结果:毫秒级别的延时是能够支持的,微妙是不支持的. 二.demo import time ...

  7. 嵌入式开发(7)系统定时器(SysTick)之延时函数运用

    目录 一.系统定时器 1. 简介 2.工作原理 3.频率的概念 二.库函数SysTick定时器操作 系统定时器配置 三.寄存器SysTick定时器操作 1.系统定时器的用途 2.寄存器 3.官方示例 ...

  8. 无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)

    目录 前言 一.代码部分 二.使用和验证 1.引入头文件 2.初始化 3.使用和验证 三.可移植性 总结 前言 接触HAL库差不多两年了,一直苦于HAL库没有自带微秒级的延时,网上的前辈们给出的解决方 ...

  9. STM32定时器延时函数

    本文用STM32F205芯片中的TIM3为例,写了两种定时器延时函数.本人所知的延时函数方式有3种,通过定时器中断方式的延时函数在本文中暂时不提及.为方便自己记忆,以下均为自己总结,如有错误,欢迎大家 ...

最新文章

  1. 程序员4月书讯:Angular来了!
  2. centos中查找某一段时间的文件
  3. STM32 基础系列教程 46 – RNG
  4. latex beamer 空一行_握草!一行Python代码写的游戏,我能这样玩一天
  5. 从工程转向管理,访谈Github公司的Phil Haack
  6. 为什么awt_为AWT的机器人创建DSL
  7. 我喜欢阅读和计算机英语,关于自考中的计算机专业
  8. Java 中关键字transient引出序列化与反序列化
  9. sqlserver还原到mysql_SQLSERVER完整数据库还原(简单恢复模式)
  10. 20.UNIX 环境高级编程--数据库函数库
  11. 54. mysqli 扩展库
  12. mysql事件查看器_MYSQL事件查看器使用介绍 | 学步园
  13. 直播线上实时翻译和流式字幕技术实践与应用
  14. 坚果云Outlook邮件管理体系畅享高效办公生活
  15. 解决ADS1.2报错Cannot obtain license
  16. 【C语言编程练习】华氏转换为摄氏
  17. word到处html分页,请问如何把做好的word分页导出为html格式
  18. 超级淘为什么能在众多新零售导购平台崛起,并深受大家欢迎
  19. GameMaker: Studio 学习笔记(二)深度 物理属性 房间切换 滑冰
  20. [leetcode] 质因数分解

热门文章

  1. css-Basics
  2. ISCA2022部分论文阅读整理
  3. 北斗形变监测系统_桥梁北斗形变监测 核心为HCMONITOR
  4. 【WPF学习手记】C#产生0~1之间的随机数
  5. 网络溯源追踪系统的日志管理与运行维护?
  6. 前端七十二变之javascript高级
  7. 2021年机械员-通用基础(机械员)考试总结及机械员-通用基础(机械员)复审考试
  8. 软件测试真的很重要!——软件测试的作用
  9. IP Camera (IPC),CHIPUP
  10. JAVA AES加密解密工具类