【无标题】

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

相关推荐
嵌入式阿蔡9 小时前
传感器_03:电机驱动——让 GPIO 当指挥官,别让 GPIO 当电源
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
国科安芯11 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
树的枝14 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
单片机杂货铺15 小时前
【单片机毕业设计选题】基于stm32单片机儿童公路车速度检测报警
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
振南的单片机世界17 小时前
看门狗硬核拆解:1.6秒不喂狗,硬件强制“掀桌子”
arm开发·stm32·单片机·嵌入式硬件
嵌入式阿蔡17 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
NYFEA18 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
国科安芯19 小时前
ASL622S:把“信号失真“挡在门外的航天级运放
网络·单片机·嵌入式硬件·架构·状态模式·低轨卫星星座
XiHongShi201619 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺20 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计