【ARM裸机s5pv210 】GPIO

发布者:Mingyue1314最新更新时间:2025-01-02 来源: cnblogs关键字:ARM裸机  s5pv210  GPIO 手机看文章 扫描二维码
随时随地手机看文章

GPJ0CON  寄存器共32位,每个引脚用4位控制,16进制的话正好一个数可以控制一个引脚

 

 

GPJ0DAT 寄存器共8位,每个引脚用1位控制,16进制的话2个数控制8个引脚

 

小实验测试:


//Makefile文件


led.bin: led.o 

    arm-linux-ld -Ttext 0x0 -o led.elf $^

    arm-linux-objcopy -O binary led.elf led.bin

    

%.o : %.S

    arm-linux-gcc -o $@ $< -c


%.o : %.c

    arm-linux-gcc -o $@ $< -c 


clean:

    rm *.o *.elf *.bin   -f


//led.S  GPJ0 3 5引脚常亮


#define GPJ0CON        0xE0200240

#define GPJ0DAT        0xE0200244

.global _start

_start:

    ldr r0, =0x11111111        //所有引脚设置为输出模式对应的16进制数

    ldr r1, =GPJ0CON        //GPJ0CON  寄存器位置

    str r0, [r1]            //把r0中的数存到r1指向的地方

    

    ldr r0, =0xd7            //3 5位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

flag:

    b flag                    //死循环  或  b.


//led.S 使用寄存器操作 3 4引脚常亮


#define GPJ0CON        0xE0200240

#define GPJ0DAT        0xE0200244

.global _start

_start:

    ldr r0, =0x11111111        //所有引脚设置为输出模式对应的16进制数

    ldr r1, =GPJ0CON        //GPJ0CON  寄存器位置

    str r0, [r1]            //把r0中的数存到r1指向的地方

    

    ldr r0, =~((1<<3) | (1<<4))        //3 4位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    b.            //死循环


//led.S 延时,流水灯效果


#define GPJ0CON        0xE0200240

#define GPJ0DAT        0xE0200244

.global _start

_start:

    ldr r0, =0x11111111        //所有引脚设置为输出模式对应的16进制数

    ldr r1, =GPJ0CON        //GPJ0CON  寄存器位置

    str r0, [r1]            //把r0中的数存到r1指向的地方

    

    ldr r0, =~(1<<3)        //3 位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    

    ldr r0, =~(1<<4)        // 4位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    

    ldr r0, =~(1<<5)        //5位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    

    b _start                //死循环  


delay:

    ldr r2, =9000000

    ldr r3, =0x0

delay_loop:

    sub r2, r2, #1        //r2 = r2 -r1

    cmp r2, r3            //cmp影响Z标志位,如果r2等于r3,则Z=1,下一句中eq就会成立

    bne delay_loop      //如果Z等于0,则ne成立,该句执行

    

    mov pc, lr            //如果Z不等于0,则该句执行


关键字:ARM裸机  s5pv210  GPIO 引用地址:【ARM裸机s5pv210 】GPIO

上一篇:解决VS2005 远程工具无法通过同步软件连接S5pv210 样机的问题
下一篇:【ARM裸机s5pv210 】芯片初始化

推荐阅读最新更新时间:2026-03-25 11:49

ARM裸机s5pv210 】程序烧录
1.SD卡刷uboot   准备工作   (1)securcrt(115200,数据流控制全不选)   (2)usb转串口驱动   (3)破坏iNand中的bootloader已从SD2启动   (4)九鼎x210_fusingtool.exe   (5)准备好的uboot.bin   流程   (1)使用x210_fusingtool将uboot.bin刷入SD卡   (2)板子启动方式选择emmc启动   板子启动流程   开机- 读iNand的uboot失败 - 读SD卡uboot成功 - 运行nandflash中的系统 2.用fastboot刷机   准备工作   (1)OTG数据线,禁用数字签名   (2)fastboo
[单片机]
ARM裸机s5pv210 】时钟配置
clock.c // 时钟控制器基地址 #define ELFIN_CLOCK_POWER_BASE 0xE0100000 // 时钟相关的寄存器相对时钟控制器基地址的偏移值 #define APLL_LOCK_OFFSET 0x00 #define MPLL_LOCK_OFFSET 0x08 #define APLL_CON0_OFFSET 0x100 #define APLL_CON1_OFFSET 0x104 #define MPLL_CON_OFFSET 0x108 #define CLK_SRC0_OFFSET 0x200 #define CL
[单片机]
朱老师ARM裸机学习笔记(二):S5PV210的内存映射
S5PV210简介 S5PV210是基于ARM Crotex-A8架构32位CPU的微处理器。 内部拥有32根地址线和32位数据线,32根地址线决定了CPU的地址空间最大为4G,这4G的内存空间如何分配,就是内存映射 S5PV210内存映射 S5PV210 datasheet中section 01_02章节 MEMORY MAP有讲。 内存分布图如下 内存分布表如下 专业名词解释 ROM : Read Only Memory 只读存储器(只不能直接通过地址总线更改数据的存储器) RAM : Ramdom Access Memory 随机访问存储器 (随机存储器,指可以随便在任何一个地址读写数据,例如内存;与之对应的是顺序
[单片机]
朱老师<font color='red'>ARM</font><font color='red'>裸机</font>学习笔记(二):<font color='red'>S5PV210</font>的内存映射
Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入)
前面几篇文章试验都是讲解如何使用 I.MX6U 的 GPIO 输出控制功能, I.MX6U 的 IO 不仅能作为输出,而且也可以作为输入。 I.MX6U-ALPHA 开发板上有一个按键,按键连接了一个 IO,将这个 IO 配置为输入功能,读取这个 IO 的值即可获取按键的状态(按下或松开)。本篇文章通过这个按键来控制蜂鸣器的开关 1、按键输入简介 按键就两个状态:按下或弹起,将按键连接到一个 IO 上,通过读取这个 IO 的值就知道按键是按下的还是弹起的。至于按键按下的时候是高电平还是低电平要根据实际电路来判断。 I.MX6U-ALPHA 开发板上有一个按键 KEY0,本篇文章我们将会编写代码通过这个 KEY0 按键来控制
[单片机]
Linux之<font color='red'>ARM</font>(IMX6U)<font color='red'>裸机</font>按键输入实验(<font color='red'>GPIO</font>的输出与输入)
ARM】2440裸机系列-gpio按键控制
功能 通过GPIO,实现按键1点亮LED1,按键2点亮LED2…… 说明 1)因为2440的按键只涉及行,所以在扫描按键时比2410简单了很多 2)在进行移位操作之前,必须进行数据寄存器的初始化,否则会出错(硬件特性) 源码 /***************************************************************************** *****函数名:main() *****功 能:通过GPIO,实现按键1点亮LED1,按键2点亮LED2 *****说 明: ***************************************************
[单片机]
ARM裸机篇--按键中断
先看看GPOI的输入实验: 按键电路图: GPF1管教的功能:EINT1 要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了! GPF1先配置成Input, 先上一个简单的输入输出操作程序吧,惭愧 unsigned char temp_io; temp_io = 0; rGPBDAT = temp_io; while(1) { if( (rGPFDAT & 0x000000002) == 0x00000000) { rGPBDAT = temp_io; temp_io = ~temp_io; } }
[单片机]
<font color='red'>ARM</font><font color='red'>裸机</font>篇--按键中断
ARM裸机开发:I.MX6U 启动方式
一、硬件平台: 正点原子I.MX6U阿尔法开发板 二、启动方式选择 I.MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC、NAND Flash、QSPI Flash 等启动。用户可以根据实际情况,选择合适的启动设备。 芯片上电以后,芯片会根据 BOOT_MODE 的设置来选择 BOOT 方式, BOOT_MODE 的值有两者控制方式 eFUSE(熔丝) 控制电平:修改 eFUSE 的方式通过熔断对应的熔丝修改电平,该方式只能修改一次(不推荐) 修改 BOOT_MODE 对应的 GPIO 高低电平来选择启动方式 I.MX6U 使用的是控制 IO 电平来控制启动方式,原理图上位置如下: BOOT_MO
[单片机]
<font color='red'>ARM</font><font color='red'>裸机</font>开发:I.MX6U 启动方式
arm-linux-gcc 裸机程序开发(二)
NANDFLASH启动与标准库问题 把u-boot的start.S移植到我的程序上,这样程序可以用supervivi的D功能下载到内存中运行了,但是还不够。因为程序在内存里,如果掉电程序就没有了,所以我们得将程序固化在flash里面。这里我们要固化在NandFlash里,这就要求程序可以能够NandFlash启动。这里我参考了mini2440的nandlfash读写程序nand.c,里面有一个函数CopyProgramFromNand就是将Nandflash里的程序复制到内存里。在这之前我一直用u-boot默认的下载地址0x33f80000,这个是为了u-boot引导内核方便而定的,因为内核要下载到前面的内存中,既然我的程序没
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved