板子照片和资源如下:

内存和GPIO电路图:

根据原理图,找到灯和按键对应的引脚,完成按键EINT19按下三个灯全亮,其余按键按下对应灯熄灭的裸板程序如下:

启动文件代码

@ 硬件初始化:关看门狗、初始化时钟、初始化SDRAM等外设;
@ 软件初始化:设置栈、设置返回地址、调用main、清理工作
@ 此程序只关闭看门狗、设置栈、调用main三个步骤
.text
.global _start
_start:ldr  r0, =0x53000000     @ WATCHDOG寄存器地址mov    r1, #0x0                     str    r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启ldr   sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K@ nand flash中的代码在复位后会移到内部ram中,此ram只有4Kbl main                @ 调用C程序中的main函数
halt_loop:b halt_loop

main.c文件代码

#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)#define GPGCON (*(volatile unsigned long *)0x56000060)
#define GPGDAT (*(volatile unsigned long *)0x56000064)/** LED1,LED2,LED4对应GPF4、GPF5、GPF6* S2,S3,S4,S5对应GPF0、GPF2、GPG3、GPG11*/
#define GPF4_msk    (3<<(4*2))
#define GPF4_out    (1<<(4*2))
#define GPF5_msk    (3<<(5*2))
#define GPF5_out    (1<<(5*2))
#define GPF6_msk    (3<<(6*2))
#define GPF6_out    (1<<(6*2))#define GPF0_msk    (3<<(0*2))
#define GPF0_in     (0<<(0*2))
#define GPF2_msk    (3<<(2*2))
#define GPF2_in     (0<<(2*2))
#define GPG3_msk    (3<<(3*2))
#define GPG3_in     (0<<(3*2))
#define GPG11_msk    (3<<(11*2))
#define GPG11_in     (0<<(11*2))void delay(long temp)
{while(temp--);
}int key_scan(void)
{if(((GPFDAT >> 0) & 0x1) == 0)return 1;if(((GPFDAT >> 2) & 0x1) == 0)return 2;if(((GPGDAT >> 3) & 0x1) == 0)return 3;if(((GPGDAT >> 11) & 0x1) == 0)return 4;return 0;
}
int main()
{int keyVal = 0;// 配置端口功能模式GPFCON &= ~(GPF4_msk | GPF5_msk | GPF6_msk | GPF0_msk | GPF2_msk);GPFCON |= GPF4_out | GPF5_out | GPF6_out | GPF0_in | GPF2_in;GPGCON &= ~(GPG3_msk | GPG11_msk);GPGCON |= GPG3_in | GPG11_in;GPFDAT &= 0xffffff8f;    // 先点亮所有灯while(1){keyVal = key_scan();switch(keyVal)       // 根据按键动作决定熄灭对应灯或者点亮所有灯{case 1:{GPFDAT |= 0x00000040;break;}case 2:{GPFDAT |= 0x00000020;break;}case 3:{GPFDAT |= 0x00000010;break;}case 4:{GPFDAT &= 0xffffff8f;break;}default:break;}delay(10000);}return 0;
}

Makefile

main.bin : main.c start.Sarm-linux-gcc -g -c -o start.o start.Sarm-linux-gcc -g -c -o main.o main.carm-linux-ld -Ttext 0x0000000 -g start.o main.o -o main_elfarm-linux-objcopy -O binary -S main_elf main.binarm-linux-objdump -D -m arm main_elf > main.dis
clean :rm -f main_elf main.dis *.o

ARM9基础实例-GPIO相关推荐

  1. LPC2124单片机的基础操作——GPIO、外部中断、定时器和串口

    LPC2124单片机的基础操作--GPIO.外部中断.定时器和串口 LPC2124的简介 LPC2124之GPIO GPIO简介 编程习惯 代码编写 LPC2124之EINT(外部中断) EINT简介 ...

  2. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

  3. java gpio_单片机基础——使用GPIO输出点亮一个LED灯

    1. 准备工作 硬件准备 开发板 首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...

  4. 一:FPGA从入门倒入坟-第一个基础实例蜂鸣器

    FPGA从入门倒入坟-第一个基础实例蜂鸣器 声明 代码 逻辑代码(.V文件) 端口约束文件(.UCF文件) 相关程序关键字解释 声明 本小白使用的是***Xilinx Spartan6***系列的开发 ...

  5. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--低级建模的基础实例(七)

    声明:本文为原创作品,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 第三章 ...

  6. 《地理信息系统基础实例操作100例》-实验15 设置字段属性域(无法创建要素问题)

    <地理信息系统基础实例操作100例>-实验15 设置字段属性域(无法创建要素问题) 零.观前须知 一.基本流程 二.所遇问题 三.解决方法(之一) (一)ArcCatalog操作 (二)A ...

  7. ProgressBar(进度条)-常用属性讲解与基础实例

    本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条:或者 ...

  8. zemax操作例子_ZEMAX基础实例 - 单透镜设计

    ZEMAX基础实例 - 单透镜设计 说明 日期:2011年11月17日 点击数:24131 引言 在成像光学系统设计中,主要指的是透镜系统设计,当然也有一些反射系统或棱镜系统. 在透镜系统设计中,最基 ...

  9. MYSQL数据库周德伟教程后题_《MySQL数据库基础实例教程》编者:周德伟,覃国蓉著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 编者:周德伟,覃国蓉著 出版社:人民邮电出版社 出版时间:2017-08-01 版次:1 开本:16开 装帧:平装 ISBN:9787115461872 版权提供:人民邮电出版社 基 ...

最新文章

  1. stm32与arm7比较(经典)
  2. 单靠MySQL进了字节,高端玩法才是王道!
  3. 日常办公会用到的python模块-用 Python 自动化办公能做到哪些有趣或有用的事情?...
  4. 双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142
  5. 报名领奖|云栖大会,10月19-22日杭州不见不散!
  6. centos一键清理磁盘空间_磁盘空间不够用?教你一键清理电脑重复文件
  7. nio 读取目录所有文件_在NIO.2中使用文件和目录
  8. 带出7个“师弟”,支付宝BASIC College的辅导员是个伪90后
  9. java8 groupingby_Java8 教程第五章之Streams Collectors groupingBy
  10. 内蒙古自治区赤峰市谷歌高清卫星地图下载(百度网盘离线包下载)
  11. Win10 + Ubuntu 双系统完美避坑删除 Ubuntu 教程
  12. 2022-2027年中国环保领域集团级sis系统行业市场调研及未来发展趋势预测报告
  13. python把桢写入txt_python 怎样随机生成中文字符?
  14. 关于GX WORKS2中M8002、M8012、M8013无法使用的问题
  15. printf中连续输出i++,--i,++i,i--的值如何
  16. 快速寻找研究方向+发文章的方法!!按头安利!
  17. echarts青岛市地图下钻到区市及根据各个区市经纬度在各区市地图绘制散点图和道路线
  18. 用一部电影让你了解综合实践活动课
  19. 如何在win10安装libaio,并且使用CFLAGS和LDFLAGS环境变量指示其位置,并且如何设置DS_BUILD_AIO=0禁用async_io...
  20. PSIM仿真+C语言(c block)实现PID控制和最小拍控制

热门文章

  1. 标自然段的序号格式_word怎么自然段编号-word段落添加编号-word怎么分段编号
  2. 数据结构(王道版本,主讲人:闲鱼学长)P7-P18
  3. 【协议森林】IPv6过渡技术之MAP-T/E技术
  4. SQL 中的 IFNULL和NULLIF
  5. 【无标题】黑炫酷的监控界面,实际上是用了什么开源工具?
  6. 普罗米修斯Prometheus+Grafana,监控搭建与界面基础配置
  7. 阿里云OSS配置及使用
  8. Test OpenStack SRIOV (by quqi99)
  9. android extra_shortcut_icon,Android自动创建shortcut
  10. Python程序设计总结 目录