tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
来源:互联网 发布:抗战中日伤亡真实数据 编辑:程序博客网 时间:2024/04/27 21:55
GPIO:General Purpose Input/Output (GPIO) Control
具体查阅exynos4412手册第六章或google GPIO
本章介绍操作GPIO相关寄存器实现按键控制led灯亮灭或蜂鸣器buzzer。
按键keys在母板上 与XEINT_n相连接
查找EXINT 在核心板上
与GPX3_2(3/4/5)重用
查找手册上:需要控制的寄存器
led灯在核心板上:
手册上查找GPM4:
实现原理
将按键和led对应的寄存器设定为input/output,程序检测到按键输入,则向led输出
实现代码如下
//keysleds.c wycinxaut原创并测试通过//实现4个按键控制4个led亮灭#define GPX3CON (*(volatile unsigned long*)0x11000c60)#define GPX3DAT (*(volatile unsigned long*)0x11000c64)#define GPM4CON (*(volatile unsigned long*)0x110002e0)#define GPM4DAT (*(volatile unsigned long*)0x110002e4)//GPX3CON[2,3,4,5] -----k1 k2 k3 k4void (*printf)(char*, ...) = 0x43e11434;void main(void){ printf("printf ok!\n"); init_led(); GPX3CON &= ~(0xffff << 8); while(1) { if((GPX3DAT & (1 << 2))==0) { delay(); if((GPX3DAT & (1 << 2))!=0) led_on_off(1); } if((GPX3DAT & (1 << 3))==0) { delay(); if((GPX3DAT & (1 << 3))!=0) led_on_off(2); } if((GPX3DAT & (1 << 4))==0) { delay(); if((GPX3DAT & (1 << 4))!=0) led_on_off(3); } if((GPX3DAT & (1 << 5))==0) { delay(); if((GPX3DAT & (1 << 5))!=0) led_on_off(4); } }}void delay(void){ int i=0; for(i=0; i<600000;i++);}void init_led(void){ GPM4CON &= ~0xffff; GPM4CON |= 0x1111; GPM4DAT |= 0xf;}void led_on_off(int i){ switch(i) { case 1: GPM4DAT ^= (1 << 0); printf("led1\n"); break; case 2: GPM4DAT ^= (1 << 1); printf("led2\n"); break; case 3: GPM4DAT ^= (1 << 2); printf("led3\n"); break; case 4: GPM4DAT ^= (1 << 3); printf("led4\n"); break; default: break; }}
编译及运行(注:$EXE为要编译c文件的文件名)
arm-linux-gcc -c $EXE.c -o $EXE.o //交叉编译
arm-linux-ld -Ttext=0x50008000 $EXE.o -o $EXE //链接到0x50008000这个内存地址
arm-linux-objcopy -O binary $EXE $EXE.bin //去头,只保留二进制指令
运行:
1.kermit连接开发板,进入uboot,dnw 50008000
2.另开终端 dnw $EXE.bin
3.kermit端:go 50008000 运行程序
测试结果
另注:buzzzer蜂鸣器也可以设置gpio control不再赘述
wycinxaut原创,转载请注明-------by richard wong 2015-03-06
0 0
- tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
- tiny4412-arm嵌入式开发裸板驱动 (一):开发环境及工具搭建和介绍
- 【嵌入式Linux+ARM】GPIO操作
- 【嵌入式Linux+ARM】GPIO操作
- TINY4412 驱动开发学习笔记整理--ARM体系结构篇
- 嵌入式ARM裸板程序——GPIO
- 基于ARM的Linux嵌入式系统如何操作GPIO口
- Arm嵌入式开发之网络设备驱动
- Arm嵌入式开发之LCD驱动
- Arm嵌入式开发之Flash设备驱动
- 嵌入式ARM驱动蜂鸣器
- ARM裸机程序开发9(GPIO)
- (嵌入式导论)ADS基础开发和ARM汇编
- 嵌入式开发与ARM基础 s3c2440
- Linux环境下arm嵌入式开发基础
- Tiny4412友善之臂ARM开发板静态IP设置(重启有效)
- 嵌入式ARM裸板程序——存储管理器驱动
- ARM GPIO口位操作
- 2015年如何利用网络赚钱
- 1343 - The Rotation Game
- java多线程哲学家思考吃饭问题
- c#中ref和out的用法
- 在unity内用c#实现一个数组的倒序输出
- tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
- 1354 - Mobile Computing
- 1374 - Power Calculus
- c#数组倒序存放
- UVa-133The Dole Queue
- 1601 - The Morning after Halloween
- 1602 - Lattice Animals
- python logging 模块
- 1603 - Square Destroyer