简介
这是一个使用 N32G031 微控制器学习基本 GPIO(通用输入/输出)控制的入门项目。它在基础“Hello World”示例上进一步依次控制 PB1、PB3、PB6 和 PB7 上的板载 LED,无需外部接线即可学习顺序逻辑和定时功能。该项目已针对 UnityMbed 跨平台工作流进行优化。
Nations N32G031 Cortex-M0
PB1, PB3, PB6, PB7
板载 LED 流水灯
演示视频
接线与硬件连接
无需外部接线: 本项目直接使用 UnityMbed Starter Kit 开发板上集成的 LED;这些 LED 清楚标有 PB7、PB6、PB3 和 PB1。
| 设备 | 引脚 | N32G031 开发板引脚 | 说明与建议 |
|---|---|---|---|
| 板载 LED 1 | LED 1 | PB1 | 板载 SMD LED 1 |
| 板载 LED 2 | LED 2 | PB3 | 板载 SMD LED 2 |
| 板载 LED 3 | LED 3 | PB6 | 板载 SMD LED 3 |
| 板载 LED 4 | LED 4 | PB7 | 板载 SMD LED 4 |
运行方式与执行逻辑
上电并将代码烧录到开发板后,微控制器会持续执行以下循环,形成流水灯效果:
启用时钟并配置 PMODE/POTYPE
通过 RCC->APB2PCLKEN 的第 3 位启用时钟,并配置 GPIOB 的 PMODE 和 POTYPE 寄存器,将 PB1、PB3、PB6、PB7 设为推挽输出。
逐引脚设置/清除 PBSC 位
通过操作 PBSC 寄存器,依次点亮并熄灭 PB1 → PB3 → PB6 → PB7,然后重新开始。
// UnityMbed — 在 N32G031 的 PB1、PB3、PB6、PB7 上依次点亮 LED
#include "n32g031.h"
static void delay(volatile uint32_t n) { while (n--) __NOP(); }
int main(void) {
/* 通过 APB2 的第 3 位启用 GPIOB 时钟 */
RCC->APB2PCLKEN |= (1u << 3);
/* 将 PB1、PB3、PB6、PB7 配置为推挽输出 */
// 清除 PB1[3:2]、PB3[7:6]、PB6[13:12]、PB7[15:14] 的 PMODE 位
GPIOB->PMODE &= ~((0x3U << 2) | (0x3U << 6) | (0x3U << 12) | (0x3U << 14));
// 将 PMODE 设为 01(通用输出模式)
GPIOB->PMODE |= ((0x1U << 2) | (0x1U << 6) | (0x1U << 12) | (0x1U << 14));
// 将 PB1、PB3、PB6、PB7 的 POTYPE 位清零(推挽)
GPIOB->POTYPE &= ~((1U << 1) | (1U << 3) | (1U << 6) | (1U << 7));
// 初始状态下关闭所有 LED(向 PBSC 的高 16 位写入 1 以清除引脚)
GPIOB->PBSC = (1U << (1 + 16)) | (1U << (3 + 16)) | (1U << (6 + 16)) | (1U << (7 + 16));
while (1) {
// 点亮 PB1
GPIOB->PBSC = (1U << 1);
delay(400000);
GPIOB->PBSC = (1U << (1 + 16)); // 熄灭 PB1
// 点亮 PB3
GPIOB->PBSC = (1U << 3);
delay(400000);
GPIOB->PBSC = (1U << (3 + 16)); // 熄灭 PB3
// 点亮 PB6
GPIOB->PBSC = (1U << 6);
delay(400000);
GPIOB->PBSC = (1U << (6 + 16)); // 熄灭 PB6
// 点亮 PB7
GPIOB->PBSC = (1U << 7);
delay(400000);
GPIOB->PBSC = (1U << (7 + 16)); // 熄灭 PB7
}
}学习与 AI 扩展思路
根据代码架构与执行流程的分析,学习者可以借助 UnityMbed AI Copilot 探索以下扩展:
多引脚控制
理解 HIGH/LOW 状态,并学习通过位运算同时操作和控制多个 GPIO 引脚。
调整流水灯速度
修改代码中的 delay(400000)。例如改为 50000,可观察更快速、流畅的扫描效果。
往返流水灯效果
让 AI 修改循环,使 LED 按 PB1 → PB3 → PB6 → PB7 → PB6 → PB3 → PB1 的顺序往返点亮。
对称成对闪烁
让 AI 编写逻辑:先同时点亮 PB1 与 PB7,再同时点亮 PB3 与 PB6,形成蝴蝶振翅般的对称节奏。
构建与烧录指南
打开项目: 直接在 IDE 中打开此项目文件夹。
构建与烧录: 点击界面工具栏中的 Build 和 Flash 按钮即可。