嵌入式开发学习之--点亮LED灯(下)

简介: 嵌入式开发学习之--点亮LED灯(下)

嵌入式开发学习之--点亮LED灯(下)


接上一篇文章,这一篇,我们来具体学习一下点亮LED灯的main文件该如何写。

       首先需要创建一个main()函数和一个SystemInit()函数,这里注意的是,这是在启动文件的汇编语言中已经固定好的,即使你用不到SystemInit(),你要么创建,要么去屏蔽启动文件里对应位置的代码,否则编译会报错。

如图,编译报错找不到SystemInit()

       创建好一个main()函数和一个SystemInit()函数后,点击编译按钮,可以看到0错误,0警告。基础框架已经搭好,现在要做的就是通过控制寄存器,来控制PH10引脚输出一个低电平。这里我们要借助另一样工具,就是芯片手册。

芯片手册

       每一款芯片都有他对应的芯片手册,里面详细的记载了芯片的使用方法,想要嵌入式能力提升,阅读芯片手册的能力是十分重要的。

       如图,这是STMF4系列的芯片手册关于通用I/O口的资料(野火资料中有),根据介绍,这个端口模式寄存器MODERy(y=0...15)以两位来操作一个引脚,可以将0到15的每个引脚分别配置成00(输入)、01(通用输出)、10(复用功能)、11(模拟模式)四种模式,我们要配置PH10,根据表格找到MODER10,是第20,21位。因为我们是一个普通输出,所以将两位配置成01,通用输出模式。这里需要注意的是配置时最好是进行位操作,去配置对应位而不是直接赋值,不然可能会影响到其它引脚的配置。

因为通用输出模式又分为输出推挽和输出开漏两种,开漏需要加上拉电阻,不合适,所以选择输出推挽。由图可见,将第10位配置成0。

接着往后看,配置完输出模式后,还需要配置输出速度,通过介绍可以看到也是两位配置一个引脚的速度,一共有4种速度。因为即使低速也是MHZ级别的,对于我们led灯完全够用。所以配置哪种速度都可以。

继续往后看,还有一个上拉下拉寄存器,对于输出来说,上拉下拉不会影响高低电平,但是上拉能增强一点输出能力,所以我们这里选择配置成上拉电阻(01)。

继续往后看,输入寄存器IDR,和我们没什么关系,我们要的是输出,所以略过,再接着是ODR寄存器,介绍说通过BSRR寄存器可以对应的将其置位(置1)和复位(置0)。

可以看到第10位和第26位分别是对10引脚置位和复位,也就是置1置0,需要注意如果同时对10引脚又置0又置1,最终还是置1。

再往后还有一些复用功能寄存器,我们用不到,就不一一介绍了,等需要的时候再回头查阅就好。到此为止,关于这个引脚的寄存器配置就全有了。但是还缺少一个关键的配置,就是时钟,想要对应的引脚工作,就必须打开相应的时钟。所有的GPIO口都是挂在AHB1上的,所以我们需要使能AHB1时钟。

至此,整个点亮LED的程序便完整了。下面是具体代码,编译没有问题,烧写进开发板。

下载成功。

开发板红色的LED灯成功点亮。

总结:

       点亮led灯虽然很简单,但它背后所涉及的知识也是很全面的,当你懂得如何点亮led灯背后的原理时,其实就是懂得了引脚控制,寄存器配置等等。其他的更加复杂的功能,也不过是在这基础上的演变,看时钟图,看寄存器功能,找对应引脚进行对应配置,再去结合上层逻辑,也就是这样了。

相关文章
|
6月前
4-2 51单片机点亮LED
4-2 51单片机点亮LED
63 2
|
6月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
|
6月前
|
Linux
linux驱动开发-点亮第一个led灯
linux驱动开发-点亮第一个led灯
74 0
|
编解码 网络性能优化 芯片
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
889 0
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
|
Ubuntu Linux 芯片
史上最全的LED点灯程序—使用STM32、FPGA、Linux点亮你的LED灯
不知道小伙伴们点亮过多少板子的LED灯,有很多小伙伴留言说讲一下stm32、fpga、liunx他们之间有什么不同,不同点很多,口说无凭,今天就来点亮一下stm32、fpga和liunx板子的led灯,大家大致看一下点灯流程和点灯环境以及点灯流程,就能大概的了解一下三者的区别,可以有选择的去学习!
387 0
史上最全的LED点灯程序—使用STM32、FPGA、Linux点亮你的LED灯
|
编译器
【51单片机】点亮LED灯(四种形式)
英文名:Light Emitting Diode。 简称:LED。 应用:LED显示屏、交通信号灯、广告灯、液晶屏背光源等。 特点:节能是LED灯最突出的特点、环保、
792 0
【51单片机】点亮LED灯(四种形式)
LabVIEW控制Arduino LED灯闪烁(基础篇—2)
利用LIAT中的数字I/O函数库,通过LabVIEW控制Arduino Uno控制板上D13管脚上LED灯,实现等间隔闪烁。
【51单片机】点亮一个LED灯(看开发板原理图十分重要)
点亮一个LED灯(看开发板原理图十分重要)
478 0
|
C语言 芯片
STM32 实战之点亮LED
STM32 实战之点亮LED
|
芯片
蓝桥杯嵌入式之 LED 闪烁
蓝桥杯嵌入式之 LED 闪烁
358 0