购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务2.1
点亮一个LED灯

【任务描述】

应用C语言编写程序,在嵌入式实训板上实现点亮一个LED灯。

【思政点拨】

通过自己动手点亮一个LED灯,就如同照亮了人生前进的道路,激发学生用所学知识,开启自主研发产品的兴趣。

【任务分析】

为了完成上述任务,需要先了解LED(Light Emitting Diode)。LED也称为发光二极管,是一种固态的半导体器件,可以直接把电转化为光。发光二极管的心脏是一个半导体晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,整个晶片被环氧树脂封装起来,实物如图2.1所示。

图2.1 发光二极管实物图

发光二极管的管芯结构与普通二极管相似,由一个PN结构成。当在发光二极管PN结上加正向电压时,空间电荷层变窄,载流子扩散运动大于漂移运动,致使P区的空穴注入N区,N区的电子注入P区。当电子和空穴复合时会释放出能量并以发光的形式表现出来。

了解原理后,画出发光二极管任务原理图并分析实现方法,原理图如图2.2所示。要点亮发光二极管LED,只要引脚PB0.1为高电平即可。同理,当引脚PB0.1为低电平时,LED不会被点亮。程序中用“0”表示低电平,“1”表示高电平,因此,要点亮图2.2所示的发光二极管,只需将值“1”赋给嵌入式芯片对应的引脚即可。同理,要熄灭发光二极管,只需将值“0”赋给嵌入式芯片对应的引脚即可。

图2.2 LED原理图

【相关知识】

2.1.1 GPIO工作原理

GPIO工作原理及库函数应用讲解(基于LED灯)

GPIO是通用输入/输出寄存器的简称,用于引脚与外部硬件设备连接,可实现与外部通信、控制外部硬件或采集外部硬件数据的功能。

STM32F103VBT6芯片有100个引脚,包括5个通用输入/输出口组成,分别为GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,通常简称为PAx,PBx,PCx,PDx,PEx。GPIO口的电路结构图如图2.3所示。

图2.3 GPIO口的电路结构图

GPIO口的电路结构包括输入/输出寄存器、输入/输出控制电路与驱动器、保护二极管。

①保护二极管:I/O引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

②TTL施密特触发器:信号经过触发器后,把模拟信号转化为0和1的数字信号。

③P-MOS管和N-MOS管:使GPIO具有“推挽输出”和“开漏输出”的模式。

④GPIO的4种输入模式:浮空模式( IN_FLOATING)、上拉模式( IPU)、下拉模式(IPD)、模拟输入(AIN)。

⑤GPIO的4种输出模式:开漏输出(Out_OD)、开漏复用(AF_PP)、推挽输出(Out_PP)、推挽复用(AF_OD)。

2.1.2 GPIO相关库函数介绍

GPIO配置的相关函数API主要位于“stm32f1xx_hal_gpio. c”文件中,GPIO的接口函数分为初始化函数、控制函数和配置函数三类。

①初始化函数,HAL_GPIO_Init:初始化引脚的工作模式,包括引脚的工作速度、复用模式、上拉模式、下拉模式等参数。HAL_GPIO_DeInit:将引脚恢复成默认的状态,即各个寄存器复位时的值。

②控制函数,HAL_GPIO_ReadPin:读取引脚的电平状态,函数返回值为0或1。HAL_GPIO_WritePin:设置引脚电平状态,给引脚写0或1。HAL_GPIO_TogglePin:翻转电平引脚状态。

③配置函数,HAL_GPIO_LockPin:锁定引脚的配置。

引脚初始化流程:

首先利用引脚初始化数据类型定义了一个结构体变量GPIO_InitStruct,并将它的各个成员变量初始化为零。其次根据引脚的配置要求,对相关的成员变量进行赋值。最后调用引脚初始化函数HAL_GPIO_Init,完成引脚的初始化。

【任务实施】

1)硬件连接

根据前述分析,原理接线图如图2.4所示。

图2.4 原理接线图

2)软件编程

(1)建立工程

首先使用STM32CubeMX建立工程,在项目1中已经详细讲解过,这里只列出具体的引脚配置部分。

①启动CubeMX选择“ACCESS TO MCU SELECTOR”,进入目标选择界面。

②在芯片搜索框中输入“STM32F103VBT6”,在芯片列表框中双击出现的芯片型号,完成启动芯片。

③配置引脚PA6为输出模式,如图2.5所示。

图2.5 GPIO引脚的配置

(2)主程序流程图

主程序流程图,如图2.6所示。

图2.6 主程序流程图

(3)源程序代码

下面是源程序代码的主要部分,其中重点的程序代码都做了注释,这里没有列出非主要程序代码,完整的程序详见教学资源中的程序和实验视频。

【任务小结】

经过程序的调试、编译、下载到STM32主控实训板,实验效果如图2.7所示。

图2.7 实验效果图

如果要实现LED灯闪烁,其实施步骤与点亮一个LED灯的步骤相同,但程序的编写有所不同,这里使用HAL_GPIO_TogglePin电平跳转函数。

【考核评价】

【课后作业】

1.实现两个相邻LED灯在电路板上常亮。

2.实现两个相邻LED灯在电路板上循环闪烁。 67tsfJud4oOe4Q0dX62xIzlRNodxXDZlOH8ifPXaFgplGJNjosxcwn7RSJ3zC0Hw

点击中间区域
呼出菜单
上一章
目录
下一章
×