【无标题】

根据《基于仿真器调试S5P4418-基础实验指导书》4.1节的要求,实验目标是控制板载的4个GPIO LED(分别连接至 GPIOC1、GPIOA30、GPIOB0、GPIOB6)实现轮流闪亮。以下给出完整的工程源码、实验步骤说明及预期结果。


实验4.1:基于 S5P4418 接口-GPIO LED 实验

1. 实验目的

  • 熟悉 Eclipse 开发环境与 ARM 裸机编程。
  • 掌握 S5P4418 GPIO 的输出控制方法。

2. 实验内容

编写程序控制实验箱上的 4 个 LED (D7~D10)依次循环点亮,形成流水灯效果。

3. 硬件连接与原理

  • LED与GPIO映射

    LED 标号 GPIO
    D7 GPIOC1 GPIOC1
    D8 MCU_CAM1_D0 GPIOA30
    D9 MCU_CAM1_D1 GPIOB0
    D10 MCU_CAM1_D4 GPIOB6
  • 控制方法

    1. 关闭对应 GPIO 的复用功能,将其设为 GPIO 模式。
    2. 配置 GPIOxOUTENB 寄存器的对应位为 1,设为输出模式。
    3. 向 GPIOxOUT 寄存器的对应位写 1 输出高电平(LED亮),写 0 输出低电平(LED灭)。

4. 实验步骤概要

  1. 打开 VMware 中的 Windows 7 虚拟机,启动 Eclipse。
  2. 导入已有的工程 Intl_gpioleds(或新建工程,加入必要的启动文件、链接脚本等)。
  3. 编译工程:右键工程名 → Build Project ,生成 Intl_gpioleds.elf
  4. 配置调试参数:将拨码开关 SW3 设为 001 (仿真器裸机调试模式),连接仿真器,打开实验箱电源,启动 Server 并连接。
  5. 在 Eclipse 中进入 Debug Configurations ,选择 Zyin Embedded debug (Native),点击 Debug 按钮。
  6. 程序下载运行后,观察开发板上 LED 的轮流闪亮现象。

5. 完整源代码(main.c)

c 复制代码
#include "s5p4418.h"

// 简易延时函数(毫秒)
void delay_ms(int ms)
{
    int i, j;
    while (ms--) {
        for (i = 0; i < 5; i++)
            for (j = 0; j < 514; j++)
                ;
    }
}

int main(void)
{
    // 1. 配置 GPIO 为输出模式
    GPIOC.OUTENB |= (0x1 << 1);   // GPIOC1  (LED D7)
    GPIOA.OUTENB |= (0x1 << 30);  // GPIOA30 (LED D8)
    GPIOB.OUTENB |= (0x1 << 0);   // GPIOB0  (LED D9)
    GPIOB.OUTENB |= (0x1 << 6);   // GPIOB6  (LED D10)

    while (1) {
        // 全部熄灭
        GPIOC.OUT &= ~(0x1 << 1);
        GPIOA.OUT &= ~(0x1 << 30);
        GPIOB.OUT &= ~(0x1 << 0);
        GPIOB.OUT &= ~(0x1 << 6);
        delay_ms(500);

        // 点亮 LED D7 (GPIOC1)
        GPIOC.OUT |= (0x1 << 1);
        delay_ms(500);
        GPIOC.OUT &= ~(0x1 << 1);

        // 点亮 LED D8 (GPIOA30)
        GPIOA.OUT |= (0x1 << 30);
        delay_ms(500);
        GPIOA.OUT &= ~(0x1 << 30);

        // 点亮 LED D9 (GPIOB0)
        GPIOB.OUT |= (0x1 << 0);
        delay_ms(500);
        GPIOB.OUT &= ~(0x1 << 0);

        // 点亮 LED D10 (GPIOB6)
        GPIOB.OUT |= (0x1 << 6);
        delay_ms(500);
        GPIOB.OUT &= ~(0x1 << 6);
    }

    return 0;
}

6. 预期实验结果

  • 开发板上的 LED D7、D8、D9、D10 依次循环点亮(每个亮约 500ms),形成流水灯效果。

7. 注意事项

  • 实验中需确保 Jtag 仿真器已正确连接,虚拟机能识别仿真器。
  • 编译前检查工程包含 start.Ss5p4418.initmap.ldsMakefile 等必要文件,且 Makefile 中的 NAME 需与工程名一致。
  • 每次切换工程时,先关闭当前工程再导入新工程,避免编译冲突。

通过以上步骤和代码,即可完成实验 4.1,观察到 GPIO LED 的轮流闪亮。

相关推荐
LCG元9 小时前
STM32实战:基于STM32F103的家用新风系统智能控制器(空气质量监测+PID调速)
stm32·单片机·嵌入式硬件
LCG元9 小时前
STM32实战:基于STM32F103的多通道工业数据采集与监控系统(Modbus RTU+上位机)
stm32·单片机·嵌入式硬件
资深流水灯工程师10 小时前
STM32 单片机 USB 通讯原理与 HAL 库实战详解
stm32·单片机·嵌入式硬件
资深流水灯工程师10 小时前
STM32 I2C 通讯原理与三种实现模式详解
stm32·单片机·嵌入式硬件
zlinear数据采集卡10 小时前
电源纹波杀手:LDO线性稳压电路的“降噪哲学”——基于ZLinear数据采集卡的深度解析
单片机·嵌入式硬件·fpga开发·硬件架构
资深流水灯工程师10 小时前
STM32 USART 通讯原理与三种模式详解
stm32·单片机·嵌入式硬件
资深流水灯工程师10 小时前
STM32 单片机 SPI 通讯原理详解
stm32·单片机·嵌入式硬件
EMTime10 小时前
玲珑GUI-工程设置
单片机·mcu·ui·用户界面
不做无法实现的梦~11 小时前
MAVLink 协议教程
linux·stm32·嵌入式硬件·算法
QiLinkOS11 小时前
【用呼吸重构创造价值关系——QiLink生态】
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法