菜鸟AI - 让提示词生成更简单! 全站导航 全站导航
AI工具安装 新手教程 进阶教程 辅助资源 AI提示词 热点资讯 技术资讯 产业资讯 内容生成 模型技术 AI信息库

已有账号?

首页 > AI资讯新闻 > STM32MP1 Cortex-M4开发:扩展板LED灯控制实验
技术资讯 综合资讯

STM32MP1 Cortex-M4开发:扩展板LED灯控制实验

2026-05-29
阅读 0
热度 0
作者 菜鸟AI编辑部
摘要

摘要

写在前面: 本文属于《ARM Cortex-M4裸机开发篇》系列教程,该系列共14篇。开发平台采用华

写在前面:

本文属于《ARM Cortex-M4裸机开发篇》系列教程,该系列共14篇。开发平台采用华清远见FS-MP1A开发板(基于STM32MP157双核处理器),M4裸机部分不仅讲解核心控制逻辑,还深度集成资源扩展板上的各类传感器与执行器件——空气温湿度传感器、LED指示灯、数码管、蜂鸣器、振动马达、按键中断、直流风扇等,本篇即为其关键一环。

资源扩展板作为FS-MP1A的专用扩展模块,集成了十余种主流传感器、执行器及总线控制器件,非常适合项目级开发拓展。覆盖智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境监测等方向的综合项目约十个,配套文档、源码及应用程序资料同步提供。

此外,针对FS-MP1A开发板,除Cortex-M4裸机系列外,还提供Cortex-A7开发、FreeRTOS、Linux基础及应用开发、Linux系统移植、Linux驱动开发、硬件设计、人工智能机器视觉、Qt应用编程、Qt综合项目实战等系列教程,技术栈覆盖全面。

资源扩展板介绍

硬件介绍&资源扩展板可开发项目

扩展板LED灯控制

实验原理

对照扩展板原理图与实物,板载四颗LED。其中LED4为底板电源指示灯,LD1、LD2、LD3为可编程控制引脚。电路原理采用经典三极管驱动方式:

根据电路图,当LED1引脚输出高电平时,三极管Q1导通,发光二极管LED1点亮。同理,LED2和LED3引脚置高电平后,LD2和LD3也会亮起。

进一步查阅原理图,LED1、LED2、LED3分别对应STM32MP157芯片的PE10、PF10、PE8引脚,映射关系一目了然:

扩展板与底板接口对照图

依据网络编号可直接追踪至CPU管脚,上图已清晰标注对应关系。整理如下表:

原理图网络编号对应管脚管脚功能管脚功能码
LED1PE10GPIOANALOG
LED2PF10GPIOANALOG
LED3PE8GPIOANALOG

实验目的

掌握LED驱动原理

学会配置并操作STM32MP157A的GPIO端口,实现对外设LED的点亮与熄灭控制

实验环境

FS-MP1A开发平台

ST-Link仿真器

STM32CubeIDE集成开发环境

PC机(Windows XP / 7/10,32位或64位皆可)

实验步骤

启动STM32CubeIDE,首先进入CubeMX配置界面。

在搜索框中查找扩展板LED对应的GPIO引脚:PE8、PE10、PF10。左键单击引脚,将其模式设置为GPIO_Output。

需特别注意:与部分单片机不同,此处必须额外设置“Pin Reservation”指定给“Cortex-M4”。若遗漏此步骤,STM32CubeMX不会生成GPIO初始化代码。操作方式:在已选引脚上右键,选择“Pin Reservation” → “Cortex-M4”。

在Code Generator选项中,勾选“为每个外设生成独立的C和H文件”,便于后期代码维护与阅读。

完成上述配置后,按Ctrl+S保存,系统弹出提示是否生成代码,选择Yes即自动生成工程,同时系统时钟配置代码一并完成。

以上为新建工程的配置流程。若希望快速上手,也可按12.3.2章节方式直接导入已有工程——工程路径位于【华清远见-FS-MP1A开发资料\2-程序源码\ARM体系结构与接口技术\Cortex-M4\7_EX_GPIO_LED】。

接下来实现GPIO控制函数。在main.c中编写驱动代码,核心调用HAL库的GPIO引脚电平输出API。

void bsp_led_on(void)

{

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);

}

void bsp_led_off(void)

{

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);

}

最后在main.c的主循环中依次调用bsp_led_on()与bsp_led_off(),通过改变GPIO引脚电平即可实现LED亮灭控制。

来源:互联网

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

同类文章推荐

相关文章推荐

更多