首先查看TQ210的底板原理图

这次编程只操作KEY1和KEY2,在TQ210核心板原理图中搜索XEINT0

可以看出KEY1和KEY2分别接在S5PV210的GPH0_0和GPH0_1引脚。

这次编程使用查询法,需要设置这两个引脚为输入模式,然后循环读取引脚状态,当用户按下按键时,对应引脚为低电平,同时改变LED状态。

查看S5PV210芯片手册

start.S

.global _start             @声明一个全局的标号
_start:bl main                  @跳转到C函数去执行
halt:b halt                 @死循环

key.c

#define GPC0CON      *((volatile unsigned int *)0xE0200060)
#define GPC0DAT     *((volatile unsigned int *)0xE0200064)#define GPH0CON       *((volatile unsigned int *)0xE0200C00)
#define GPH0DAT     *((volatile unsigned int *)0xE0200C04)void delay(volatile unsigned int t)
{volatile unsigned int t2 = 0xFFFF;while (t--)for (; t2; t2--);
}int main()
{int key_val = 0;int bit;GPC0CON &= ~(0xFF << 12);GPC0CON |= 0x11 << 12;     // 配置GPC0_3和GPC0_4为输出:LED1和LED2GPH0CON &= ~(0xFF << 0);   // 配置GPH0_0和GPH0_1为输入:key1和key2while (1){key_val = GPH0DAT & 0x3;if (key_val){delay(500000);        // 防抖延时key_val = GPH0DAT & 0x3;if (key_val){if (0x01 == key_val)     // key1GPC0DAT ^= 1 << 3;        // toggle LED1else if (0x02 == key_val)   // key2GPC0DAT ^= 1 << 4;        // toggle LED2}}}return 0;
}

Makefile

key.bin: start.o key.oarm-linux-ld -Ttext 0x20000000 -o key.elf $^arm-linux-objcopy -O binary key.elf $@arm-linux-objdump -D key.elf > key.diskey.o : key.carm-linux-gcc -c $< -o $@
start.o : start.Sarm-linux-gcc -c $< -o $@clean:rm *.o *.elf *.bin *.dis

下载程序方法参加《TQ210裸机编程(1)——点亮一个LED》

下载程序运行后:

按下key1,LED1点亮,再次按下key1,LED1熄灭

按下key2,LED2点亮,再次按下key2,LED2熄灭

转载于:https://www.cnblogs.com/suncoolcat/p/3367811.html

TQ210裸机编程(3)——按键(查询法)相关推荐

  1. TQ210裸机编程(4)——按键(中断法)

    S5PV210有4个向量中断控制器(VIC),每个向量中断控制器包含32个中断源. 当某个中断源产生中断时,CPU会自动的将VICxVECTADDRy(x=0,1,2,3,y=0-31)寄存器的值赋给 ...

  2. TQ210裸机编程(2)——LED流水灯

    两个文件start.S和led.c start.S .global _start                @声明一个全局的标号 _start:     bl main               ...

  3. TQ210——按键(中断查询法)

    TQ210--按键 底板上有8个独立按键,可分别使用查询法和中断法控制按键.通过原理图可知:按键按下,GPIO检测到低电平,松开时高电平. 直接查询法程序的实现简单,但是效率很低,CPU一直在查询,啥 ...

  4. S5PV210(TQ210)裸机编程

    本文更多的是教会大家如何学习. 4.1    汇编学习 4.1.1 基础知识     4.1.2 ARM模拟器 4.2    S5PV210启动流程 4.3    点亮一个LED 4.4    串口 ...

  5. BSP板机支持包、linux启动分析、ARM裸机编程

    文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...

  6. 03 - 程序设计框架:裸机编程中应用层、中间层、驱动层划分

    03-程序设计框架:裸机编程中应用层.中间层.驱动层划分 1.框架设计层次 <代码大全>第五章中,把程序设计分为四个层次: 软件系统,就是整个系统.整个程序 分解为子系统或包.比如我们可以 ...

  7. TQ210_裸机编程(一)——点亮LED灯

    TQ210_裸机编程点亮LED灯 首先查看 TQ210 的底板原理图: 我们可以看到 两个 LED 分别接到 S5PV210 的 GPC0_3 和 GPC0_4 引脚. 这里用了 NPN 三极管,具有 ...

  8. MCU裸机编程的状态机框架--第一部分

    MCU裸机编程的状态机框架--第一部分 1 状态机的概念 1.1 状态机的要素 1.2 状态迁移表 1.3 状态机思路实现一个时钟程序 1.4 状态机应用的注意事项 1.5 更复杂的状态机 2 单片机 ...

  9. mini2440 裸机编程 -led

    又重新做回了嵌入式,想把以前学到的东西从头复习一下.首先从裸机编程开始. 本系列使用的硬件环境是友善之臂的 mini2440,百问网的OpenJtag,所有程序在 linux gcc下编译, 具体硬件 ...

最新文章

  1. luogu P3398 仓鼠找sugar(树链剖分、求树上两条路径有没有交点,爽!)
  2. 关于工程教育和工程教育专业认证工作的思考——吴岩司长在工程教育高峰论坛上的讲话
  3. (iOS-基本知识)int long NSInteger 入门与兼容问题讲解
  4. Java中非法参数的异常_Java中的异常
  5. 数据中心空调施工工序工艺管理要点
  6. 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
  7. 重新构想原子化 CSS
  8. leetcode1433. 检查一个字符串是否可以打破另一个字符串(贪心算法)
  9. Appium+Python移动端(Android)自动化测试环境搭建原来没有那么难!+ 带你实战去
  10. SQL Server2008R无法登录的解决方案(系统文件损坏)1814 18456....不看别后悔,有用请点赞...
  11. 基于Redis的分布式锁的简单实现
  12. Effective Objective-C 2.0 Tips 总结 Chapter 3 Chapter 4
  13. sqlserver 'sa'密码忘记,windows集成身份验证都登录不了解决办法
  14. python win32com模块
  15. arcgis api 3.X 实现加载百度矢量地图和百度影像地图
  16. SSM项目之短信验证码登录
  17. 网页进行针式打印_针式打印机的页面打印设置小技巧解析
  18. 映像劫持 Image Hijack
  19. 转-零死角玩转stm32-高级篇之SDIO(4bit + DMA、支持SDHC、带协议分析)
  20. 直播测试-网络延迟和丢包工具设置

热门文章

  1. 在iPad上利用pythonista(python3.6)调用有道翻译API实现单词的批量翻译
  2. MR 图像分割 相关论文摘要整理
  3. ISO9001质量管理体系剖析
  4. 达梦两个表模糊查询_极简式财务记账管理系统,窗格录入,模糊查找,弹窗汇总...
  5. 单片机C语言叮咚门铃设计报告,基于单片机“叮咚”门铃的设计
  6. 备孕、怀孕、产子、月子知识大全
  7. ThinkPad X230I 预装Win8换其它系统前的BIOS设置
  8. 6个面试的经典英文问题
  9. 新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
  10. 学习笔记:SemanticStyleGAN 面向可控图像合成和编辑的组合生成先验学习