#中delay函数_ECBM系列教程3:闪烁灯——delay函数的用法。
上一篇文章中,教大家如何点亮一个LED。这一篇文章就教大家如何让LED闪烁。
LED闪烁的原理其实很简单,先让LED亮起来,延时一段时间后熄灭,然后再亮起来就可以了。就是亮——延时——灭——延时——亮.....这样周而复始。
#include "ecbm_core.h" //加载库函数的头文件。
void main(){ //main函数,必须的。system_init(); //系统初始化函数,也是必须的。while(1){LED_ON; //亮delay_ms(200); //延时LED_OFF; //灭delay_ms(200); //延时}
}
于是我们就在while循环里,按照上面的步骤直接写出代码。
https://www.zhihu.com/video/1218223212192059392
可以看到LED已经如我们想象那样闪烁了。记性好的同学可能想起来,上一篇文章中提到一个LED闪烁的语句。没错,其实用下面的代码也是一样的效果。
#include "ecbm_core.h" //加载库函数的头文件。
void main(){ //main函数,必须的。system_init(); //系统初始化函数,也是必须的。while(1){LED_BLINK; //LED闪烁delay_ms(200); //闪烁延时}
}
正所谓条条大路通罗马,同一个效果的实现代码可能会多种多样。因此大家在学习的时候一定领会意思,而不是死记硬背。
本篇的要点就是delay函数的实现。
我们可以在ecbm_core.h里找到delay_ms函数的声明,声明的注释里告诉了你怎么使用该函数。比如说delay_ms函数就是想延时多少毫秒就在参数中填多少。像延时200ms就填200。就是这么简单。然后我们可以在ecbm_core.c里查看delay_ms函数的定义:
内部就是一个双重while循环,通过不断的循环来消耗时间来达到延时的目的。ecbm_delay_base是一个经过计算过的延时基准,保证了内部循环运行一次的时间是1ms。于是外层循环循环几次就能延时多少秒。在逻辑分析仪里可以看到延时的时间挺准的。
如果要实现us级的延时,则可以使用delay_us。但是由于计算延时基准本身就需要us级的时间,所以需要额外的把延时节拍求出来。
应用代码如图所示,加/**/标志的就是实现us级延时的两句。
由于IO赋值,main函数的while循环跳转也需要时间,所以延时会比20us稍稍大一些。即便这样也足够用了。
如果还有疑问,就在本篇文章下面提出吧。
预告:下一篇文章将会介绍GPIO的结构和GPIO库的函数,敬请期待。
#中delay函数_ECBM系列教程3:闪烁灯——delay函数的用法。相关推荐
- uboot更改gpio电平_ECBM系列教程4:单片机的手和脚——GPIO
GPIO全称叫做General-Purpose Input/Output,即通用输入/输出口.是单片机和外界交流的重要部件,你可能看到过没有ADC的单片机.没有定时器的单片机或者没有串口的单片机,但是 ...
- python拟合三元函数_python基础教程之常用内置函数、三元运算、递归
目录 常用内置函数 abs/round/sum eval/exec enumerate max/min sorted zip map filter 补充:reduce lambda 初识递归 再谈递归 ...
- 【转载】深入了解scanf()/getchar()和gets()等函数,C++系列教程,C++实例教程,C++
---------首先我们看一下scanf()读取字符串的问题: 程序2: #include <stdio.h> int main() { char str1[20], str2[20]; ...
- keil如何添加h文件_ECBM系列教程1:如何搭建ECBM库环境。
STC8属于8051单片机,发展到现在已经是带流水线的版本了,不过依然还是支持8051的指令集.因此任何支持8051的IDE都可以用来开发STC8单片机. 不过由于ECBM库的一些特性,我们只使用KE ...
- Excel教程中数组公式之系列教程(一)
数组公式知识点一:数组的概述 在excel教程中,数组有一维数组.二维数组.甚至三维数组等更多维之分.不论是一维数组还是二维数组,在excel教程公式中都要用大括弧括起来. 数组中各个数 ...
- matlab计算公式中的累加,Matlab系列教程之数值计算_求和(积)_求累加(积)
这是Matlab数值计算系列的第二篇文章,主要介绍求和或者求积,. 主要应对的的问题是对矩阵的每一行,或者每列求和或求积. 1.对矩阵的每一行或每一列求和. sum_col=sum(matrix); ...
- python内置函数open_Python学习教程:Python内置函数大总结(下篇)
这里接着上次的 Python学习教程,给大家总结了Python 剩下的33个内置函数. 31 hash() 返回对象的哈希值 In [112]: hash(xiaoming)Out[112]: 613 ...
- python编写字符串查找函数_Python 简明教程 --- 8,Python 字符串函数
好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- Steve McConnell 目录 字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数. 建 ...
- linux 负数_linux内核提权系列教程(2):任意地址读写到提权的4种方法
一.漏洞代码分析 代码见arbitrary.h. 1.功能函数介绍 功能 输入结构名 输入结构 功能 ARBITRARY_RW_INIT init_args size 初始化全局对象,存于g_mem_ ...
最新文章
- 过来人的肺腑之言,攻读ML和CV硕士给我带来了什么?
- python怎么建文件dome_Python专题(四) 如何制作一个demo给老板看
- 保存处理后的视频文件
- 线性表C语言locate和ETget,线性表(数据结构重难点讲解)
- Visualization Document Feb 12 16:42
- Spring安全示例教程
- pascal与其它语言代码书写的不同和pascal的快捷键
- 【转】SQL SERVER convert函数日期格式化应用
- excel中使用Nist REFPROP常用函数及使用方法
- 计算机mid函数column,excel中的函数意思=MID($C3,COLUMN(D2)-3,1)
- FreeSwitch连接语音网关配置及使用场景
- 从一到无穷大 #5 公有云时序数据库定价
- STA X(X为主存地址)指令发出的微操作命令
- 上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。...
- 字节跳动大数据开发面试题-附答案
- 拼图游戏Canvas版
- 开源代码分析技巧之三——老外如是说
- 客厅计算机笔记本cpu,自己装一台客厅迷你小电脑,我很幸运避开数个大坑
- 所有程序中的java在哪里设置密码_关于安全性:如何在桌面客户端应用程序(Java)中存储密码和敏感数据?...
- 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...
热门文章
- Python基本数据类型 set()
- 谈谈招聘时我喜欢见到的特质
- 2.2.5 操作系统之调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)
- mysql memory leak_解决memory leak问题
- python案例教程黄蔚答案_Python编程案例教程
- C++11 std::function
- android 上传html文件大小,浅谈关于Android WebView上传文件的解决方案
- python计算图解_图解NumPy,看这一篇就够了!
- vim 插件_你不得不知道的适用于程序员的VIM插件
- 2021年度人工智能产品TOP10,百度飞桨EasyDL再获业界认可