【无标题】

根据《基于仿真器调试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 的轮流闪亮。

相关推荐
辰域电子6 分钟前
STM32项目开源:粮仓环境安防监测系统(代码 + 原理图 + 仿真)
stm32·单片机·嵌入式硬件·开源·毕业设计·proteus
深圳市尚想信息技术有限公司31 分钟前
HITENX海速芯TM52F1363-SSOP24 8KB Flash存储+EEPROM,国产8位MCU单片机
单片机·mcu·flask·芯片·控制器·海速芯
mitugaoyang19931 小时前
Marvell88Q5152交换机开发(5)-烧录和调试
网络·嵌入式硬件·网络通信
m0_752753121 小时前
51单片机中的定时器和中断等
单片机·51单片机
AAA代码批发商1 小时前
DAYS41 UART 串口通信 + DS18B20 单总线温度传感器
嵌入式硬件·51单片机
充哥单片机设计1 小时前
【STM32开源项目】智能窗户控制器
stm32·单片机·嵌入式硬件·毕业设计·智能窗户
Jlzn88881 小时前
钢带折弯±0.1°怎么来?伺服闭环补偿回弹拆解
大数据·嵌入式硬件·制造
威嵌神州1 小时前
便携式加固产品方案:加固平板、手持终端、巡检仪、管理柜
嵌入式硬件·智能手机·电脑
安河桥。1 小时前
PCIe 是什么?为什么这么快?从差分线到 Gen6 的硬核解析与场景全览
嵌入式硬件·车载系统
糖糖单片机设计14 小时前
基于 STM32 的公交车定位与报站系统
stm32·单片机·嵌入式硬件