linux-tq2440
- // 文件名 key_led.c
- // 功能:
- // 当不按任何键时,LED2,3,4三个灯流水点亮.
- // 当按下任何一个按键时,对应的LED灯点亮,其他的熄灭.
- //
- // GPB5, GPB6, GPB7, GPB8 --- LED1, LED2, LED3, LED4
- #define GPBCON (*(volatile unsigned long *)0x56000010)
- #define GPBDAT (*(volatile unsigned long *)0x56000014)
- #define GPB5_msk (3<<(5*2))
- #define GPB6_msk (3<<(6*2))
- #define GPB7_msk (3<<(7*2))
- #define GPB8_msk (3<<(8*2))
- #define GPB5_out (1<<(5*2))
- #define GPB6_out (1<<(6*2))
- #define GPB7_out (1<<(7*2))
- #define GPB8_out (1<<(8*2))
- // GPF1, GPF4, GPF2, GPF0 --- K1, K2, K3, K4
- #define GPFCON (*(volatile unsigned long *)0x56000050)
- #define GPFDAT (*(volatile unsigned long *)0x56000054)
- #define GPF1_msk (3<<(1*2))
- #define GPF4_msk (3<<(4*2))
- #define GPF2_msk (3<<(2*2))
- #define GPF0_msk (3<<(0*2))
- #define GPF1_in (0<<(1*2))
- #define GPF4_in (0<<(4*2))
- #define GPF2_in (0<<(2*2))
- #define GPF0_in (0<<(0*2))
- void wait(volatile unsigned long dly)
- {
- for(; dly > 0; dly--);
- }
- int main(void)
- {
- unsigned long i = 0;
- GPBCON &= ~(GPB5_msk | GPB6_msk | GPB7_msk | GPB8_msk);
- GPBCON |= GPB5_out | GPB6_out | GPB7_out | GPB8_out; // 将LED1,2,3,4对应的GPB5/6/7/8三个引脚设为输出
- GPFCON &= ~(GPF1_msk | GPF4_msk | GPF2_msk | GPF0_msk);
- GPFCON |= GPF1_in | GPF4_in | GPF2_in | GPF0_in; // 将K1,2,3,4对应的GPF1/4/2/0三个引脚设为输入
- while(1)
- {
- if((GPFDAT&(1<<1)) == 0) // K1
- {
- GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8)); // 全熄灭
- GPBDAT &= ~(1<<5);
- }
- else if((GPFDAT&(1<<4)) == 0) // K2
- {
- GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8)); // 全熄灭
- GPBDAT &= ~(1<<6);
- }
- else if((GPFDAT&(1<<2)) == 0) // K3
- {
- GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8)); // 全熄灭
- GPBDAT &= ~(1<<7);
- }
- else if((GPFDAT&(1<<0)) == 0) // K4
- {
- GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8)); // 全熄灭
- GPBDAT &= ~(1<<8);
- }
- else
- {
- wait(30000*30);
- GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8)); // 全熄灭
- GPBDAT &= ~(1<<(6+i)); // 将对应位置0, 点亮
- i++;
- if(i > 2)
- {
- i = 0;
- }
- }
- }
- return 0;
- }
- @******************************************************************************
- @ File:crt0.S
- @ 功能:通过它转入C程序
- @******************************************************************************
- .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只有4K
- bl main @ 调用C程序中的main函数
- halt_loop:
- b halt_loop
- # 文件名: Makefile
- CFLAGS := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -nostdlib
- key_led.bin : crt0.S key_led.c
- arm-linux-gcc $(CFLAGS) -c -o crt0.o crt0.S
- arm-linux-gcc $(CFLAGS) -c -o key_led.o key_led.c
- arm-linux-ld -Ttext 0x0000000 crt0.o key_led.o -o key_led_elf
- # arm-linux-ld -Tleds.lds crt0.o key_led.o -o key_led_elf
- arm-linux-objcopy -O binary -S key_led_elf key_led.bin
- arm-linux-objdump -D -m arm key_led_elf > key_led.dis
- clean:
- rm -f key_led.dis key_led.bin key_led_elf *.o
linux-tq2440相关推荐
- 编译linux tq2440,移植linux文件系统遇到的问题 tq2440,linuxtq2440
移植linux文件系统遇到的问题 tq2440,linuxtq2440 说明:移植是按照tq2440的教程进行移植的.但是其中避免不了出现一些小的问题. ----------------------- ...
- 编译linux tq2440,QT4.8.2在TQ2440开发板上的移植(一)--编译和安装
主机版本:Ubuntu 11.04 交叉编译器版本:4.3.3 移植的主要工作就是编译在ARM板上运行的qt库,并且把这些库做到根目录中.需要的文件tslib-1.4.tar.gz qt-everyw ...
- 我爱机器学习网机器学习类别文章汇总
机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...
- 我爱机器学习--机器学习方向资料汇总
转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的"linux-2.6.30.4_20100531.tar.bz2"源码包. 解压(天嵌默 ...
- csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决
已在内核代码中添加EmbedSky_hello驱动为例,进行内核编译时候出现了一下几个问题: 1.在 /opt/EmbedSky/linux 2.6.30.4/drivers/char目录下修改&qu ...
- 移植linux文件系统遇到的问题 tq2440
说明:移植是按照tq2440的教程进行移植的.但是其中避免不了出现一些小的问题. ----------------------------------------------------------- ...
- TQ2440之移植linux 内核
ubuntu: 18.04 busybox: busybox-1.20.2.tar 修改时钟 linux-4.9.84\arch\arm\mach-s3c24xx\mach-smdk2440.c // ...
- Linux系统中添加IPv6模块(TQ2440开发板)
TQ2440开发板自带的内核镜像(Linux-2.6.30.4)并没有支持IPv6协议栈,对网卡添加IPv6地址是不被允许的,出现"ifconfig: socket: Address fam ...
- linux 2440网卡驱动,Linux-2.6.30平台下移植DM9000网卡驱动到TQ2440
平台:虚拟机Ubuntu 12.04 内核:linux-2.6.30 开发板:TQ2440 包括编译内核.制作文件系统,到目前可以在虚拟机上可以通过交叉网线可以和开发板互通,用了弄了差不多快两天时间 ...
最新文章
- MySql8.0.19最新版本创建用户分配权限演示,You have an error in your SQL syntax权限分配问题解决方法
- 计算机系统唯一能识别的不需要翻译,计算机习题答案及解析ban.doc
- 进程间的通讯(IPC)方式
- vue 工作项目中 实现消息列表的 全选,反选,删除功能
- 洛谷——P1568 赛跑
- JCheckBox 默认选择_了解GoldWave使用习惯的一些默认设置
- tcl语言读取文件一行_TCL语言(九) 路径和文件
- java 通过经纬度计算巨鹿,中国主要城市经纬度查询
- ESP_Easy BME280 WIFI MQTT传感器制作
- 如何将NCM转换成MP3 - NCM转MP3转换软件
- 离散数学知识点总结(3):等值演算,16个命题定律 / 基础等价式,重言式的替换规则,证明有效性和可满足性的方法
- 雷军做程序员时写的博客,真心强啊。。
- maya多边形建模怎样做曲面_maya多边形建模教程_maya建模教程
- Android即时通讯和sns开源项目汇总
- java web没有APP流行_简单粗暴,详细得不要不要的 JavaWeb快速入门
- 上午写了一段代码,下午就被开除了。。。
- Gym101635C Macarons
- 短信包对比 - 2021.5
- 进击3D游戏界!Cocos Creator快速实现骨骼动画交互!
- 微信小程序 Springboot校运会高校运动会管理系统
热门文章
- Spring IOC 容器源码分析 - 填充属性到 bean 原始对象
- 160家优秀国外技术公司博客
- ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能
- Deep Learning简明深度学习方法概述
- 聚类(1)——混合高斯模型 Gaussian Mixture Model
- Matlab中断语句
- 【题解】P4124 [CQOI2016]手机号码
- APP启动速度是门面,如何做到极致优化?
- 离散数学及其应用 (Kenneth H·Rosen 著)
- 安装中文语言包会导致 Troubleshoot Compatibility 失败