前言:使用友善之臂tiny4412进行嵌入式学习,对于初学者而言并不是一件轻松事情,即使该平台已经存在很多年,网上也有很多分享,但由于官方文档相对还是不够全面,导致很多初学者遇到问题不知如何下手,如果可以建议初学者使用2240、6410来进行学习(更加成熟,如果学习途中遇到问题,在网上寻找解决方案会更加快捷),下面我会记录自己利用该平台学习嵌入式开发的一些过程及遇到的一些问题

  • 平台:Ubuntu:16.04
  • 开发板:Tiny4412 1506
  • 依赖工具:arm-linux-gcc 4.5.1 dnw minicom (使用minitools传输在裸板开发时尝试过很多方法程序没有跑起来,后来干脆直接使用dnw的方式,有成功的小伙伴可以留言介绍下,感谢)

1、在开发板PCB图上找到相应的引脚与对应的寄存器

a、电路图中led对应的引脚为


从上图可以找到相应的寄存器GPM4,于是从三星给到芯片手册中可以搜索GPM4可以找到相应的控制寄存器与数据寄存器:

b、button

与LED一样,通过先查找官方给的原理图,找到LED的引脚位置:

再利用引脚编码XEINT26查找对应的寄存器GPX3,同样在三星官方给的芯片手册中找到对应的数据寄存器与控制寄存器:

2、编码

a、地址写进头文件中adress.h

#pragma once
//led 灯引脚寄存器
#define gpiobase 0x11000000
#define GPM4DAT (*(volatile unsigned long *)(gpiobase + 0x02E4))
#define GPM4CON (*(volatile unsigned long *)(gpiobase + 0x02E0))
//key 引脚寄存器
#define GPX3DAT (*(volatile unsigned long *)(gpiobase + 0x0C64))
#define GPX3CON (*(volatile unsigned long *)(gpiobase + 0x0C60))

b、控制逻辑如下:

#include "address.h"
void led_on(void);
void led_off(void);
void (*printf)(char *, ...) = 0x43e11a54;//该函数地址在uboot中可以找到对应地址void key_led(void){//GPX3_2~GPX3_5分别控制K1~K4GPX3CON &=~(0xffff<<8);//Configure GPX3-2 as input for K1~K4//K1 ->GPX3-2,1=keydown,0=keyupwhile (1){/* 使用按键控制led灯 *///->GPX3-2,1=keydown,0=keyupif(GPX3DAT&(1<<2)){led_off();}else{led_on();}//->GPX3-4,1=keydown,0=keyupif(GPX3DAT&(1<<4)){led_off();}else{led_on();}//->GPX3-5,1=keydown,0=keyupif(GPX3DAT&(1<<5)){led_off();}else{led_on();}}//K3我这儿K3按键已经损坏
}void led_on(void){GPM4CON &= ~0xffff;//控制位先清零,然后赋1GPM4CON |=0x1111;GPM4DAT &=~0xf; //赋0控制灯亮
}
void led_off(void){GPM4CON &= ~0xffff;//控制位先清零,然后赋1GPM4CON |=0x1111;GPM4DAT |=0xf; //赋1控制灯灭
}

c、Makefile:

default:arm-linux-gcc -c key_led.c  -o key_led.oarm-linux-ld  -Ttext=0x70003000  key_led.o  -o key_ledarm-linux-objcopy  -O binary   key_led  key_led.bin
clean:rm -f key_led.o  key_led  key_led.bin   *~

执行make,然后生成key_led.bin二进制文件

连接dnw到70003000处:

然后使用dnw传送二进制文件到板子上:

使用go 70003000执行:

然后分别按K1,K3,K4可以看到led小灯全部亮起!!!

【tiny4412】按键控制led灯亮灭相关推荐

  1. 用51单片机实现按键控制LED灯亮灭

    用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...

  2. STM32按键控制LED灯亮灭(四)

    编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...

  3. ZYNQ学习笔记(五)---按键控制LED灯亮灭实验

    这个实验其实很早就做了,但是由于这段时间自己一直在忙一些其他的事所以没有及时更新.今天抽出个空来更新一下.本次实验是关于按键控制LED亮灭.其中涉及到的内容有计数器.按键消抖以及一些简单的逻辑. 1. ...

  4. 按键控制led灯亮灭c语言原理,4个独立按键控制4个LED亮灭的单片机程序问题

    本帖最后由 ll13536121668 于 2017-11-2 17:32 编辑 4只独立按键控制4只LED亮和灭,按下按键,LED亮,再按下,LED灭.因为我们很多都是按完按键,松开手LED才亮. ...

  5. 3.按键控制LED灯亮灭

    实验现象:本实验通过一个按键来控制一个发光二极管的亮灭.按键按一下LED点亮.再按一下LED熄灭. 理论学习: 该实验主要难点: 如何扫描按键的状态? 如何防抖动?  原理讲解: 按键检测原理:通过把 ...

  6. CC2530的中断操作----按键控制led灯亮灭

    中断使能主要有四个步骤: (1)使.EA 位为 1,开中断. (2)设置寄存器 IEN0.IEN1和IEN2中相应中断使能位为1. (3)如果需要,则设置P0.P1.P2各引脚对应的各中断使能位为1. ...

  7. 按键控制led灯亮灭c语言实验报告,通过按键控制LED灯的实验

    通过查看开发板的核心电路原理图,加上查阅SUMSANG 2440的datasheed得知四个按键K1,K2,K3,K4对应GPF中的GPF1,GPF4,GPF2,GPF0.将这四个引脚配置为输入模式, ...

  8. 五项按键控制LED灯亮灭

    实验需要:CubeMXkeil5STM32F051K8开发板 一.查看实物 1.点灯的引脚配置与文章[使用 CubeMX+Keil5+STM32F051K8 开发实现点亮一盏LED实验] (https ...

  9. 按键控制LED灯亮灭——基于arduino单片机

    程序设计: 函数:digitalRead() 作用:用来读取数字串口状态,HIGH还是LOW (其实还有一种表达方式就是HIGH是"1",LOW是"0",只是H ...

最新文章

  1. 面试官:说说RabbitMQ 消费端限流、TTL、死信队列
  2. 当我们在讨论奢侈品行业时,人工智能可以做什么?
  3. EasyTouch中多种QuickGesture手势检测
  4. python知识点:上下文管理器[__enter__ 和 __exit__ ]
  5. 编程之美-俄罗斯方块游戏方法整理
  6. java程序 开发工具_15款Java程序员必备的开发工具
  7. linux 显示套接字统计信息,Linux 命令 - ss: 查看套接字统计信息
  8. 微信再次“杠上”支付宝!|畅言
  9. Qt学习之路(37): Qt容器类之关联存储容器
  10. 关机时无人照管更新正在运行_路辉物流设备:无人化分拣作业驱动物流业降本增效...
  11. python2.7安装pyqt4及转换ui文件为py文件
  12. 销售转向java编程的开始之路
  13. 百度快照多久更新一次?
  14. 清除Chrome浏览器的历史记录、缓存
  15. Windows 10连接打印机提示网路“指定的网络名已不再可用”
  16. sirikit_iOS 12 Siri捷径SiriKit
  17. L1-039 古风排版 (20 分)(二维数组)
  18. Using Vanishing Points for Camera Calibration
  19. 用大数据解决“痛点”问题 “云上贵州”再发力
  20. RDKit | 建立溶解度预测的LightGBM回归模型

热门文章

  1. 新版诺诺二开视频打赏源码Ver3.0版本+功能强大
  2. 计算机仿真的理论依据,复杂系统的理论依据
  3. 前端进阶之setTimeout 倒计时为什么会出现误差?
  4. OpenJudge NOI题库1.1答案
  5. etc apdu指令
  6. 使用Biopython解析PDB结构
  7. Python开发的6大优点,让你学到真正的技术!
  8. IDEA 设置类注释和方法注释模板
  9. 5. (go语言)函数
  10. Java中Music类是什么_高效的Java音乐播放类