STM8S自学笔记-005 精准延时

  • 精准延时
    • 精准延时的代码
    • 使用精准延时函数的跑马灯代码

【修订记录】
1、20210807,第一版
2、20210813,错字修订

精准延时

“精准延时”函数的使用场景是主时钟=16MHz时的情况。因为STM8S103的最高主时钟为16MHz,所以在其它情况下,延时函数会跑得相对慢一些,但并没有丧失功能。
可将下列代码添加到Drv_CLK.c的尾部,并在Drv_CLK.h中追加毫秒级延迟函数Delay_1ms的声明,即可在外部进行调用。

精准延时的代码

/*** @brief  Delay 1 us.* @param  None* @retval None*/
#pragma optimize = none
void Delayus(void)
{asm("nop");asm("nop");asm("nop");asm("nop");
}/*** @brief  Delay x ms.* @param  x: time* @retval None*/
#pragma optimize = none
void Delay_1ms(uint32_t x)
{uint16_t i;while (x--)for (i = 900; i > 0; i--)Delayus();
}

不过,需要指出,虽然这种循环型的延迟函数非常简单,但CPU在运行它时,只能干等着循环的结束,才能再去做其它事。其实,办法是有的,那就是利用定时器更新中断,只不过,这是后面要将的内容了。

使用精准延时函数的跑马灯代码

外部晶振频率为16MHz,将F_master设定为HSE,1分频。
LED_Control是LED串列的控制函数,定义见Drv_GPIO.c

/*** @brief  Main program.* @param  None* @retval None*/
void main(void)
{CLOCK_HSE(CLK_PRESCALER_CPUDIV1);  //HSE=16MHz, F_master=HSE/1LED_Init(LED1 | LED2 | LED3);while (1){LED_Control(LED1);Delay_1ms(1000);LED_Control(LED2);Delay_1ms(1000);LED_Control(LED3);Delay_1ms(1000);}
}

STM8S自学笔记-005 精准延时相关推荐

  1. STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效

    STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效 点亮LED GPIO初始化函数:GPIO_Init() GPIO电平操作库函数:GPIO_WriteHigh().GPIO_ ...

  2. STM8S自学笔记之利用库函数点亮一个LED

    准备工作及前提 a.已安装IAR或者STVD b.下载标准固件库(StdPeriph_Lib_V2.1.0)备用; c.已建立好一个程序模板,如未建立请参考我的博客中的帖子STVD+STM8官方固件库 ...

  3. 基于Java机器学习自学笔记(第81-87天:CNN卷积神经网络的入门到全代码编写)

    注意:本篇为50天后的Java自学笔记扩充,内容不再是基础数据结构内容而是机器学习中的各种经典算法.这部分博客更侧重于笔记以方便自己的理解,自我知识的输出明显减少,若有错误欢迎指正! 目录 1. CN ...

  4. STM32CubMX自学笔记(十)---IIC通信实验

    STM32CubMX自学笔记(十)-IIC通信实验 I2C通信协议的简介 引脚少,硬件实现简单,可扩展性强,不需要外部收发设备,广泛用在多个集成电路通信. 物理层特点: 信号线SDA和时钟线SCL 1 ...

  5. JavaSE自学笔记Real_008(多线程基础)

    JavaSE自学笔记Real_008(多线程基础) 线程的优先级设置(priority) 线程的优先级用数字表示,范围是1到10(在范围之外会报错) Thread.MIN_PRIORITY = 1 T ...

  6. 信息系统项目管理师-自学笔记

    软考-信息系统项目管理自学笔记 感谢卢海强老师编写时间2021-06-01 09:39:21 选择说明: 第一章,选择题大约占20分,要看教材的120页左右第2.4-12(项目管理).16(变更).2 ...

  7. 字节跳动大佬的Python自学笔记.pdf

    1. 字节跳动大佬的Python自学笔记 这是我的一个朋友自学资料包,通过这个资料包自学拿到了字节跳动的Offer, 下面是他之前入门学习Python时候的学习资料,非常全面,从Python基础.到w ...

  8. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  9. MySQL自学笔记2--select的5个子句

    MySQL自学笔记 使用的MySQL自带命令客户端,其中具体的操作是在自建的数据库下room303表中进行的,表中的列有:id.name.age.email.tel.salary.riqi.class ...

  10. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

最新文章

  1. document.getElementByTagName()的用法
  2. 计算机网络实验课,【课堂】师生同上一节计算机网络实验课
  3. 第二十二章 5为你的命名空间取个别名
  4. React面试题总结,就是这么简单
  5. java 快速删除文件夹_如何用Java删除文件夹里的所有文件?
  6. X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
  7. Java多线程包之BlockingQueue
  8. div水平居中和垂直居中
  9. jq方法中 $(window).load() 与 $(document).ready() 的区别
  10. Gallery3D笔记
  11. Win7 64位系统安装SQL Server2005
  12. 号称最安全的Mega网盘加密方法分析
  13. 国外java、IT技术网站汇总
  14. 召唤神龙 javascript 调整地图大小
  15. ubuntu 出现device not managed,解决方法
  16. 更新后的微信新功能,你知道吗?
  17. 【DB】数据库面试笔试题库及详解(小麦苗DBA宝典出品)--数据库运维宝典
  18. 关于以太网IO模块如何选型
  19. mac 打开网页慢_在Mac电脑开启Safari速度总是很慢?可以试试这10种解决方法
  20. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

热门文章

  1. orcale linux卸载,Linux下卸载ORACLE的多种方法(转)
  2. IDEA java 中文乱码解决方法
  3. c# gerber文件读取_Gerber文件查看方法
  4. 如何降低视频文件大小而又不影响视频清晰度
  5. 如何用纯 CSS 创作一个均衡器 loader 动画
  6. 《莫烦Python3基础教程》学习笔记
  7. 基于SSM开发的房屋租赁系统 JAVA
  8. Mac OS 终端命令失效
  9. Bex5常用方法总结
  10. 使用JS导出表格为Excel