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

embedded/2024/10/21 19:01:08/

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的八种工作模式。

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


http://www.ppmy.cn/embedded/129337.html

相关文章

[论文笔记]RA-DIT: RETRIEVAL-AUGMENTED DUAL INSTRUCTION TUNING

引言 今天带来一篇RAG微调的论文笔记——RA-DIT: RETRIEVAL-AUGMENTED DUAL INSTRUCTION TUNING。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 我们引入了检索增强双指令微调(Retrieval-Agumented Dual Instructio…

CTFHUB技能树之SQL——时间盲注

开启靶场,打开链接: 说明这关对所有信息都做了统一输出,换成延时注入试试 输入: 1 and sleep(15) (这里不知道为什么加上--倒是会影响sleep()函数的触发,从而没有延时感) 可以观察到有明显的延…

中级注册安全工程师《安全生产法律法规》真题及详解

2022年中级注册安全工程师《安全生产法律法规》真题及详解 一、单项选择题 (共70题,每题1分。每题的备选项中,只有1个最符合题意) 1. 法律的制定主体不同,其法律地位和法律效力也不同。关于法律地位和效力的说法&…

透过 Diffusion Transformer 探索生成式模型的技术演进

SiT: Exploring Flow and Diffusion-based Generative Models with Scalable Interpolant Transformers 一、前言 扩散模型为代表的生成式模型,以其深刻的还原论的哲学原理作为内在基础,辅以机器学习领域各类优秀的模型设计,在各个学术和应…

Flink系统架构和应用部署方式

目录 概述 Flink集群架构组件 Client JobManager TaskManagers 算子、Task和Subtask三者关系 概念 算子和Task的关系 Task和SubTask的关系 算子和SubTask的关系 样例 Task Slots和资源的关系 Flink应用程序部署 Flink Session 集群 Flink Job 集群 Flink Appli…

【已解决】Eclipse下载安装和环境配置 超详细教程 小白

首先确保安装了JDK 如果没安装可参考该博客安装:JDK安装、环境配置 官网下载 Eclipse Downloads | The Eclipse Foundation 1.点击download package下载 2.找到Eclipse IDE for Enterprise Java and Web Developers,根据自己的系统选择相应链接下载。…

Django发送短信

settings.py中设置 ##################################容联云短信平台账号信息############################## #容联云查看信息 RONGLIAN_ACC_ID ...... RONGLIAN_ACC_TOKEN ...... RONGLIAN_APP_ID ...... ############################################################…

QSpliter实例操作

话不多直接上代码 int main(int argc, char *argv[]) {QApplication a(argc, argv); // MainWindow w; // w.show();QFont font("PZ", 12);a.setFont(font);//左分割QSplitter* main_spliter new QSplitter(Qt::Horizontal, 0);QTextEdit* left_edit new QT…