20140627-STM8L101F3P6关于毫秒级延时函数不同写法的波形
总结一下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关于毫秒级延时函数不同写法的波形相关推荐
- 20140627-STM8L101F3P6关于微秒级延时函数不同写法的波形
总结一下STM8L101F3P6工作在16MHz下,利用死循环.中断等不同写法的微秒级延时函数精度的情况. 一.死循环空指令的写法,延时函数程序如下: /*********************** ...
- ms和us级延时函数的实现
ms和us级延时函数的实现 2020 Sept. 8th 用sysTick实现延时 寄存器说明参考火哥(膜拜)的这篇博客:第18章 SysTick-系统定时器 用中断输出: //调用core_cmX. ...
- HAL库-us级延时函数实现
已有的HAL_Delay() __weak void HAL_Delay(__IO uint32_t Delay) {uint32_t tickstart = 0U;tickstart = HAL_G ...
- 手摸手教你使用srs服务搭建毫秒级延时直播
之所以要搭建一个在公网环境下一对一毫秒级延时的直播, 就是为了做一个不限遥控距离的小车, 使用安卓手机基于aoa协议+4g/5g实现, 理论上只要电池有电(可采用太阳能方案)和有4g/5g信号的地方, ...
- stm32实现Systick的毫秒级延时和微妙级延时
学习目标: stm32实现Systick的毫秒级延时和微妙级延时 学习内容: 1.Systick 工作原理 Systick(系统定时器)是ARM Cortex M3/M4 内核的一个外设,因为所有的C ...
- python毫秒级延时
一.毫秒延时 近期有一个ms级别延时的需求,实际测试了一下, 环境:win7 64位,python2.7.13 结果:毫秒级别的延时是能够支持的,微妙是不支持的. 二.demo import time ...
- 嵌入式开发(7)系统定时器(SysTick)之延时函数运用
目录 一.系统定时器 1. 简介 2.工作原理 3.频率的概念 二.库函数SysTick定时器操作 系统定时器配置 三.寄存器SysTick定时器操作 1.系统定时器的用途 2.寄存器 3.官方示例 ...
- 无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)
目录 前言 一.代码部分 二.使用和验证 1.引入头文件 2.初始化 3.使用和验证 三.可移植性 总结 前言 接触HAL库差不多两年了,一直苦于HAL库没有自带微秒级的延时,网上的前辈们给出的解决方 ...
- STM32定时器延时函数
本文用STM32F205芯片中的TIM3为例,写了两种定时器延时函数.本人所知的延时函数方式有3种,通过定时器中断方式的延时函数在本文中暂时不提及.为方便自己记忆,以下均为自己总结,如有错误,欢迎大家 ...
最新文章
- 程序员4月书讯:Angular来了!
- centos中查找某一段时间的文件
- STM32 基础系列教程 46 – RNG
- latex beamer 空一行_握草!一行Python代码写的游戏,我能这样玩一天
- 从工程转向管理,访谈Github公司的Phil Haack
- 为什么awt_为AWT的机器人创建DSL
- 我喜欢阅读和计算机英语,关于自考中的计算机专业
- Java 中关键字transient引出序列化与反序列化
- sqlserver还原到mysql_SQLSERVER完整数据库还原(简单恢复模式)
- 20.UNIX 环境高级编程--数据库函数库
- 54. mysqli 扩展库
- mysql事件查看器_MYSQL事件查看器使用介绍 | 学步园
- 直播线上实时翻译和流式字幕技术实践与应用
- 坚果云Outlook邮件管理体系畅享高效办公生活
- 解决ADS1.2报错Cannot obtain license
- 【C语言编程练习】华氏转换为摄氏
- word到处html分页,请问如何把做好的word分页导出为html格式
- 超级淘为什么能在众多新零售导购平台崛起,并深受大家欢迎
- GameMaker: Studio 学习笔记(二)深度 物理属性 房间切换 滑冰
- [leetcode] 质因数分解