当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

GPIO

1 功能概述

本例程演示演示 GPIO Driver 的基本功能与使用方法。

例程主要完成以下内容:

  • 配置 P0.4 为 GPIO 推挽输出,周期性输出高/低电平(用于驱动 LED,需要将P0.4连接到 J17)

  • 初始化串口 UART0(115200)并打印日志,方便观察 GPIO 输出变化

  • 配置 P0.7 为 GPIO 输入并使能上拉(例程中提供了“按键控制 LED”的注释代码,可按需打开)

2 环境准备

  • 硬件设备与线材:

    • PAN271x EVB 核心板底板各一块

    • JLink 仿真器(用于烧录例程程序)

    • USB-TypeC 线一条(用于底板供电和查看串口打印 Log)

    • 杜邦线数根或跳线帽数个(用于连接各个硬件设备)

  • 硬件接线:

    • 将 EVB 核心板插到底板上

    • 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板 USB->UART 插口相连

    • 使用杜邦线或跳线帽将 EVB 底板 J8 排针对 (P06 & TXD) 和 J9 排针对 (P05 & RXD) 分别短接起来

    • 使用杜邦线将 JLink 仿真器的:

      • SWD_CLK 引脚与 EVB 底板的 P00 排针相连

      • SWD_DAT 引脚与 EVB 底板的 P01 排针相连

      • SWD_GND 引脚与 EVB 底板的 GND 排针相连

    • GPIO 演示 IO:

      • P0.4:GPIO 输出脚(例程用于驱动 LED)

      • P0.7:GPIO 输入脚(例程已配置上拉,按键逻辑在注释代码中)

      • P0.4连接到J17用于驱动LED

  • PC 软件:

    • 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率 115200(用于串口交互)

3 编译和烧录

例程位置:<PAN271x-DK>\01_SDK\samples\drivers\gpio

双击 Keil Project 文件打开工程进行编译烧录。

4 例程演示说明

  1. 烧录完成后,连接P04和J17;

  2. P04会循环输出高电平和低电平,可观察到LED灯时亮时灭;

4.1 主要流程代码(main.c节选)

void LED_GPIOInit(void)
{
  SYS_SET_MFP(P0, GPIO_Pin_4, GPIO);
  GPIO_SetMode(P0, GPIO_Pin_4, GPIO_MODE_PushPull);

  SYS_SET_MFP(P0, GPIO_Pin_7, GPIO);
  GPIO_SetMode(P0, GPIO_Pin_7, GPIO_MODE_INPUT);
  GPIO_EnablePullupPath(P0, GPIO_Pin_7);
}

int main()
{
  Clock_Init();
  Sys_Init();
  LOG("\nCPU @ %dHz\n", SystemCoreClock);
  LED_GPIOInit();

  while (1)
  {
    SYS_delay_10nop(1000000);
    GPIO_WriteOutputBit(P0, GPIO_Pin_4, 1);
    LOG("LED on\n");

    SYS_delay_10nop(1000000);
    GPIO_WriteOutputBit(P0, GPIO_Pin_4, 0);
    LOG("LED off\n");
  }
}

4.2 主要 API 说明

  • SYS_SET_MFP(Px, GPIO_Pin_x, GPIO):将对应引脚的复用功能切换为 GPIO。

  • GPIO_SetMode(Px, GPIO_Pin_x, mode):设置 GPIO 工作模式。

    • 输入:GPIO_MODE_INPUT

    • 输出:GPIO_MODE_PushPull(推挽输出)

    • 输出:GPIO_Mode_OpenDrain(开漏输出)

    • 双向检测:GPIO_MODE_QUASI

  • GPIO_WritePin(Px, pin, val):以宏方式直接写输出寄存器(例程中给出了替代写法的注释)。

  • GPIO_ReadPin(Px, pin):读取输入电平(例程中给出了“按键控制 LED”的注释逻辑)。

  • GPIO_EnablePullupPath(Px, pin):为输入引脚使能上拉。

  • GPIO_EnablePulldownPath(Px, pin):为输入引脚使能下拉。

4.3 串口输出示例

CPU @ 48000000Hz
LED on
LED off
LED on
LED off
...

4.4 注意事项

  • 使用 GPIO 之前请确保引脚复用已切到 GPIO(SYS_SET_MFP),否则可能仍在外设功能下导致读写无效。

  • 驱动 LED 时,建议使用推挽输出(GPIO_MODE_PushPull);若外部电路需要开漏方式,请改为 GPIO_Mode_OpenDrain 并外接上拉。

  • 输入脚如果悬空会导致电平不稳定,建议按需开启上拉/下拉(例程对 P0.7 使能了上拉)。