【无标题】

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

相关推荐
ytttr8731 小时前
STM32 读写 SD 卡源码(SPI 模式 + FATFS 文件系统)
stm32·单片机·嵌入式硬件
Quinn271 小时前
正点原子 STM32MP257 修复异核 FreeRTOS+OpenAMP 例程里 SysTick 延时异常的问题
stm32·嵌入式硬件·正点原子·arm linux
Deitymoon2 小时前
STM32——OLED显示图片
stm32·单片机·嵌入式硬件
深圳英康仕2 小时前
龙芯2K3000嵌入式工控机的技术拆解:算力、接口与国产系统适配
嵌入式硬件·工控机·工业计算机·国产工控机·龙芯2k3000
山木嵌入式2 小时前
STM32 UART串口通信协议与3种底层驱动实现(寄存器/标准库/HAL库)
stm32·单片机·串口·uart
Heartache boy2 小时前
野火STM32_HAL库版课程笔记-I2C介绍
笔记·stm32·单片机
Deitymoon2 小时前
STM32——OLED显示汉字
stm32·单片机·嵌入式硬件
狮驼岭的小钻风2 小时前
单片机启动流程与 .s 文件详解
单片机·嵌入式硬件
金色光环2 小时前
【DSP学习笔记】 F28335中断系统理解-基于普中DSP28335开发攻略
笔记·单片机·学习·dsp开发