4

嵌入式软件设计(点灯与闪烁)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/125122246
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

嵌入式软件设计(点灯与闪烁)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

         对于嵌入式开发的同学来说,好像点灯是绕不过去的坎。学fpga,要学点灯;学soc,要学点灯;等学stm32的时候,还是要学点灯。在mcu系统中,除了mcu之外,还需要输入系统和输出系统来进行辅佐。输入系统主要是外部输入信息,比如说按键、模电信号等等。而输出信号也很多,屏幕输出、蜂鸣器、led灯等等。一些复杂的外设,往往兼顾了输入输出两个方面,比如串口、spi、iic、usb等等。

        今天,我们就聊一聊点灯是怎么完成的。如果用寄存器的方式,不使用函数库,那么点灯就是往具体的bit进行置位。这种置位可能是置1,也可能是置0,根据具体情况而定。

1、从汇编跳到c语言

        在mcu中,一般汇编文件都是芯片厂商提供的。比如我们使用的这块stm32f103开发板,其汇编文件就是startup_stm32f10x_hd.s文件,这中间最重要的代码就是,

2、初始化led环境

        初始化led环境,这里主要是为点灯做一些环境铺垫,具体含义可以参考芯片手册。

3、开始点灯

        点灯的程序非常简单,就是在init_led之后,往bit 0置0即可。

4、闪烁的原理

        点灯之所以会闪烁,就是中间存在一个延时的过程。试想一下,如果bit 0置0,那么就是点灯。反之,就是灭灯。这中间时间等了多久,其实就是延时。延时多久,这完全可以当作是一个输入参数来完成,比如说,延时函数可以写成这样,

5、编写闪烁led代码

        有了延时函数,那么编写led灯闪烁代码就不再是难事,只需要先点灯、延时,再灭灯、延时即可。编译完成后烧入板子,就可以获得想要的效果。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK