嵌入式技术:熟悉开发环境及GPIO编程(实验报告)

1.实验目的

(1)理解GPIO常用函数功能

(2)掌握GPIO构件的输出测试方法

2.实验原理(简述GPIO工作原理,5分)

GPIO,即通用输入输出端口,是单片机等微控制器上的一种基本接口,它允许微控制器与外部硬件进行连接和数据交互。GPIO的工作原理主要依赖于其内部的数字逻辑电路。GPIO端口通常具有输入和输出两种基本功能。 

3.实验仪器设备

AHL-STM32L431开发板 +金葫芦集成开发环境+ windows操作系统+工程项目GPIO-BlueLight_20230328+工程项目GPIO-Output-Component_STM32L431_20200928

4.实验步骤

(1)导入工程项目GPIO-BlueLight_20230328(工程项目文件页面截图5分),并找到底层驱动gpio构件的位置并简述有哪几部分文件组成(5分)。

(2)找到指示灯端口及引脚定义的代码和小灯状态命名的代码。(截图5分,说明5分)

(3)在主函数中找到gpio初始化函数,说明该函数的参数有哪几部分组成,实参分别是什么。(截图5分,说明5分)

gpio_init函数由port_pin, dir, state三个参数组成,其中port_pin代表(端口号)|(引脚号)dir表示引脚方向(0=输入,1=输出,可用引脚方向宏定义)state:端口引脚初始状态(0=低电平,1=高电平)。

实参分别是LIGHT_RED,GPIO_OUTPUT,LIGHT_OFF

(4)在主函数中找到是蓝灯亮的函数。(截图5分)

(5)编译下载测试。(截图5分)

(6)在工程项目GPIO-Output-Component_STM32L431_20200928中找到控制蓝灯闪烁的代码。(截图5分)

5.数据处理及分析

(1)修改程序,将蓝灯闪烁改为其他颜色灯闪烁的形式(修改代码截图5分,运行结果正确截图5分,简单分析5分)

 

gpio_set函数将红灯打开或关闭。

2)再次修改程序,改为红绿黄交通灯灯闪烁的形式。(修改代码截图5分,运行结果正确截图5分)

6.思考与讨论(共25分,每题5分)

(1)嵌入式系统工程包含哪些文件,并简述每个文件的作用。

在嵌入式系统工程中包含源代码文件(.c结尾),头文件(.h),链接脚本(.ld)、配置文件(.cfg)、Makefile、文档文件 (.txt, .md, .pdf)、测试文件(test.c)、库文件 (.lib, .a, .so)、驱动文件 (.c)、中断服务例程 (ISR) 文件、资源文件、固件更新文件 (.bin, .hex)。其中源文件包含嵌入式系统的主要逻辑和功能实现。每个源文件通常实现特定的功能模块,例如传感器读取、数据处理、通信协议等。头文件声明函数、宏、数据结构和全局变量。头文件通常与源代码文件配对,提供接口定义,便于代码的模块化和重用。链接脚本定义程序的内存布局,包括代码段、数据段和堆栈的起始地址和大小。链接脚本指导链接器如何将不同的目标文件组合成最终的可执行文件。配置文件用于配置系统参数和选项,例如外设的初始化设置、通信参数等。配置文件通常在系统启动时读取,以便根据需要调整系统行为。Makefile 定义如何编译和链接项目的规则——包含编译器选项、源文件列表和目标文件的生成规则,便于自动化构建过程。文档文件提供项目的说明、设计文档、用户手册和开发指南。这些文档有助于团队成员理解项目的结构和功能。测试文件包含单元测试或集成测试代码,用于验证系统的功能和性能。测试文件通常与源代码文件配对,确保代码的正确性和稳定性。库文件包含可重用的代码库,提供特定功能的实现,例如数学运算、图形处理或通信协。驱动文件实现对硬件外设的控制和管理。驱动文件通常封装了对特定硬件的操作,提供统一的接口供上层应用调用。中断服务例程 (ISR) 文件处理特定中断的代码,确保系统能够响应外部事件。ISR 文件通常包含对硬件中断的处理逻辑。资源文件包含图像、声音、配置数据等资源,供嵌入式系统使用。这些文件通常在编译时被打包到最终的可执行文件中。固件更新文件包含可上传到嵌入式设备的固件映像。这些文件通常用于设备的更新和维护。

(2)在工程组织图中哪些文件是由用户编写的?哪些是由开发环境编译链接产生的?

在嵌入式系统工程的组织图中,文件的分类可以分为用户编写的文件和由开发环境编译链接产生的文件。用户编写的文件主要包括源代码、头文件、配置文件、测试文件和文档文件,而开发环境编译链接产生的文件则包括目标文件、库文件、链接脚本和最终的可执行文件。通过合理的文件组织和管理,可以提高开发效率和系统的可维护性。

(3)简述gpio.h文件、.map文件、.lst文件和.hex文件存放内容。

gpio.h 文件用于定义GPIO相关的常量和函数。.map 文件提供程序的内存布局和符号信息。.lst 文件包含源代码和对应的机器代码,便于调试。.hex 文件存储可执行的机器代码,供微控制器使用。

(4)volatile的作用是什么,举例说明使用的地方。

volatile 是 C 和 C++ 中的一个关键字,用于告诉编译器某个变量的值可能会在程序的其他部分被意外改变,因此编译器在优化代码时不应该对这个变量进行假设或优化。在嵌入式系统中;通常会使用中断来处理外部事件。假设我们有一个变量 flag,它在中断服务例程中被设置,而在主程序中被检查。如果没有 volatile,编译器可能会优化掉对 flag 的检查,导致主程序无法正确响应中断。

(5)简述GPIO的八种工作模式。

输入浮空,输入上拉,输入下拉,模拟功能,开漏输出,推挽输出,开漏复用功能,推挽式复用功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值