Loading

嵌入式作业1.2 运行示例程序

实践前准备

一、了解硬件

购买嵌入式技术基础与实践(第6版)书籍会随书附赠一个 AHL-STM32L431 嵌入式开发套件;

AHL-STM32L431 以 STM32L431 为核心,辅以硬件最小系统,集成红、绿、蓝三色灯,温度传感器,触摸感应区,复位按钮,二路 TTL-USB 接口,外接 Type-C 线,从而形成完整的通用嵌入式计算机。

二、了解开发原理

嵌入式软件开发需要一个交叉编译[1]和调试环境,即工程的编辑和编译所使用的工具软件通常在工具机上运行,这个工具软件称为集成开发环境(IDE),开发流程通常是先用工具机(如 PC)开发程序,交叉编译后生成执行程序(机器码文件),通过写入调试器(如 JTAG)下载到目标机运行调试。

使用 MCU 设计嵌入式系统,数据与程序空间采用不同存储介质,通常程序固化到 Flash 中,变量及堆栈使用 RAM 存储器。

三、资源下载和IDE安装

我们要使用的开发环境为 SD-EAI&IoT 推出的 AHL-GEC-IDE,具有编辑、编译、链接等功能,特别是配合“金葫芦”硬件,可直接运行、调试程序,根据芯片型号不同兼容常用嵌入式集成开发环境。

  • 硬件资源:AHL-STM32L431(随书夹带)

  • 集成开发环境:AHL-GEC-IDE

如有其他资料需求,大家也可以到苏州大学嵌入式学习社区浏览下载

image-20240313140838148

最终我们会得到这两个压缩包,自行解压安装即可,需要注意的是IDE的安装路径不要出现中文,工程文件需要记住其路径(不要放太深)。

编译、下载与运行第一个嵌入式程序

步骤1:硬件接线

将 Type-C 数据线的小端连接主板的 Type-C 接口,另外一端接通用计算机的 USB 接口。

能够观察到电脑设备管理器出现图中两个 USB 串行设备(端口号不一定相同),开发板LED小灯开始闪烁即为成功。

步骤2:打开环境,导入工程

打开集成开发环境 AHL-GEC-IDE,单击菜单“文件”→“导入工程”,随后选择之前下载的工程文件中..\04-Software\CH01\AHL-STM32L431-Test(文件夹名就是工程名。注意:路径中不能包含汉字,也不能太深)。导入工程后,左侧为工程树形目录,右侧为文件内容编辑区,初始显示 main.c 文件内容。

image-20240313145830454

image-20240313143400428

步骤3:编译工程

单击菜单“编译”→“编译工程”,就开始编译。正常情况下,编译后会显示“编译成功!”。

image-20240313143735280

步骤4:连接 GEC

单击菜单“下载”→“串口更新”,将进入更新窗体界面。单击“连接 GEC”查找目标 GEC,若提示“成功连接……”,则可进行下一步操作。若连接不成功,则可参阅电子资源中..\02-Document 文件夹内的快速指南文档中的“常见问题及解决办法”一节进行解决。

image-20240313144348518

步骤5:下载机器码

单击“选择文件”按钮,导入被编译工程目录下 Debug 中的 .hex 文件,然后单击“一键自动更新”按钮,等待程序自动更新完成。当更新完成之后,程序将自动运行。

image-20240313144658674

image-20240313144750446

步骤6:观察运行结果

现象如下:

  1. 红、绿、蓝各灯每 5s、10s、20s 状态变化,对外表现为三色灯的合成色,开始时为暗,依次变化为红、绿、黄(红+绿)、蓝、紫(红+蓝)、青(蓝+绿)、白(红+蓝+绿),周而复始;
  2. 用手触摸开发板上标有”热敏“字样的温度传感器,可以看到黄灯会闪烁 3 次;
  3. 用手触摸开发板上标有“金葫芦”字样的触摸区,可以看到白灯闪烁 3 次。

image-20240313145922203

LED 灯随时间变化实际效果:

触摸温度传感器后效果:

我对开发板触摸区进行触摸后,开发板和IDE并未有响应,具体原因还有待探究。

步骤7:通过串口观察运行情况

  1. 观察程序运行过程。进入“工具”→“串口工具”,选择其中一个串口,波特率设为 115200 并打开,串口调试工具页面会显示三色灯的状态、MCU 温度、环境温度(若没有显示,则关闭该串口,打开另一个串口)。
  2. 验证串口收发。关闭已经打开的串口,打开另一个串口,波特率选择默认参数,在”发送数据框“中输入字符串,单击”发送数据“按钮。正常情况下,主板会回送数据给PC,并在接收框中显示。

观察程序运行过程:

验证串口收发:


  1. 交叉编译,可以理解为在当前编译平台下,编译出能够运行在体系结构不同的另一种目标平台上的可执行程序的过程,经常用于目标平台无法运行编译所需的编译器的情况。 ↩︎

posted @ 2024-03-13 15:41  一只心耳  阅读(31)  评论(0编辑  收藏  举报