cpp] view plaincopy
  1. // 文件名 key_led.c
  2. // 功能:
  3. // 当不按任何键时,LED2,3,4三个灯流水点亮.
  4. // 当按下任何一个按键时,对应的LED灯点亮,其他的熄灭.
  5. //
  6. // GPB5, GPB6, GPB7, GPB8 --- LED1, LED2, LED3, LED4
  7. #define GPBCON      (*(volatile unsigned long *)0x56000010)
  8. #define GPBDAT      (*(volatile unsigned long *)0x56000014)
  9. #define GPB5_msk    (3<<(5*2))
  10. #define GPB6_msk    (3<<(6*2))
  11. #define GPB7_msk    (3<<(7*2))
  12. #define GPB8_msk    (3<<(8*2))
  13. #define GPB5_out    (1<<(5*2))
  14. #define GPB6_out    (1<<(6*2))
  15. #define GPB7_out    (1<<(7*2))
  16. #define GPB8_out    (1<<(8*2))
  17. // GPF1, GPF4, GPF2, GPF0 --- K1, K2, K3, K4
  18. #define GPFCON      (*(volatile unsigned long *)0x56000050)
  19. #define GPFDAT      (*(volatile unsigned long *)0x56000054)
  20. #define GPF1_msk    (3<<(1*2))
  21. #define GPF4_msk    (3<<(4*2))
  22. #define GPF2_msk    (3<<(2*2))
  23. #define GPF0_msk    (3<<(0*2))
  24. #define GPF1_in     (0<<(1*2))
  25. #define GPF4_in     (0<<(4*2))
  26. #define GPF2_in     (0<<(2*2))
  27. #define GPF0_in     (0<<(0*2))
  28. void  wait(volatile unsigned long dly)
  29. {
  30. for(; dly > 0; dly--);
  31. }
  32. int main(void)
  33. {
  34. unsigned long i = 0;
  35. GPBCON &= ~(GPB5_msk | GPB6_msk | GPB7_msk | GPB8_msk);
  36. GPBCON |= GPB5_out | GPB6_out | GPB7_out | GPB8_out;        // 将LED1,2,3,4对应的GPB5/6/7/8三个引脚设为输出
  37. GPFCON &= ~(GPF1_msk | GPF4_msk | GPF2_msk | GPF0_msk);
  38. GPFCON |= GPF1_in | GPF4_in | GPF2_in | GPF0_in;            // 将K1,2,3,4对应的GPF1/4/2/0三个引脚设为输入
  39. while(1)
  40. {
  41. if((GPFDAT&(1<<1)) == 0) // K1
  42. {
  43. GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8));    // 全熄灭
  44. GPBDAT &= ~(1<<5);
  45. }
  46. else if((GPFDAT&(1<<4)) == 0) // K2
  47. {
  48. GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8));    // 全熄灭
  49. GPBDAT &= ~(1<<6);
  50. }
  51. else if((GPFDAT&(1<<2)) == 0) // K3
  52. {
  53. GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8));    // 全熄灭
  54. GPBDAT &= ~(1<<7);
  55. }
  56. else if((GPFDAT&(1<<0)) == 0) // K4
  57. {
  58. GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8));    // 全熄灭
  59. GPBDAT &= ~(1<<8);
  60. }
  61. else
  62. {
  63. wait(30000*30);
  64. GPBDAT |= ((1<<5)|(1<<6)|(1<<7)|(1<<8));    // 全熄灭
  65. GPBDAT &= ~(1<<(6+i));                        // 将对应位置0, 点亮
  66. i++;
  67. if(i > 2)
  68. {
  69. i = 0;
  70. }
  71. }
  72. }
  73. return 0;
  74. }
[cpp] view plaincopy
  1. @******************************************************************************
  2. @ File:crt0.S
  3. @ 功能:通过它转入C程序
  4. @******************************************************************************
  5. .text
  6. .global _start
  7. _start:
  8. ldr     r0, =0x53000000     @ WATCHDOG寄存器地址
  9. mov     r1, #0x0
  10. str   r1, [r0]              @ 写入0,禁止WATCHDOG,否则CPU会不断重启
  11. ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
  12. @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
  13. bl      main                @ 调用C程序中的main函数
  14. halt_loop:
  15. b       halt_loop
[cpp] view plaincopy
  1. # 文件名: Makefile
  2. CFLAGS  := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -nostdlib
  3. key_led.bin : crt0.S  key_led.c
  4. arm-linux-gcc $(CFLAGS) -c -o crt0.o crt0.S
  5. arm-linux-gcc $(CFLAGS) -c -o key_led.o key_led.c
  6. arm-linux-ld -Ttext 0x0000000 crt0.o key_led.o -o key_led_elf
  7. #   arm-linux-ld -Tleds.lds  crt0.o key_led.o -o key_led_elf
  8. arm-linux-objcopy -O binary -S key_led_elf key_led.bin
  9. arm-linux-objdump -D -m arm  key_led_elf > key_led.dis
  10. clean:
  11. rm -f   key_led.dis key_led.bin key_led_elf *.o

linux-tq2440相关推荐

  1. 编译linux tq2440,移植linux文件系统遇到的问题 tq2440,linuxtq2440

    移植linux文件系统遇到的问题 tq2440,linuxtq2440 说明:移植是按照tq2440的教程进行移植的.但是其中避免不了出现一些小的问题. ----------------------- ...

  2. 编译linux tq2440,QT4.8.2在TQ2440开发板上的移植(一)--编译和安装

    主机版本:Ubuntu 11.04 交叉编译器版本:4.3.3 移植的主要工作就是编译在ARM板上运行的qt库,并且把这些库做到根目录中.需要的文件tslib-1.4.tar.gz qt-everyw ...

  3. 我爱机器学习网机器学习类别文章汇总

    机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...

  4. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  5. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的"linux-2.6.30.4_20100531.tar.bz2"源码包. 解压(天嵌默 ...

  6. csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决

    已在内核代码中添加EmbedSky_hello驱动为例,进行内核编译时候出现了一下几个问题: 1.在 /opt/EmbedSky/linux 2.6.30.4/drivers/char目录下修改&qu ...

  7. 移植linux文件系统遇到的问题 tq2440

    说明:移植是按照tq2440的教程进行移植的.但是其中避免不了出现一些小的问题. ----------------------------------------------------------- ...

  8. TQ2440之移植linux 内核

    ubuntu: 18.04 busybox: busybox-1.20.2.tar 修改时钟 linux-4.9.84\arch\arm\mach-s3c24xx\mach-smdk2440.c // ...

  9. Linux系统中添加IPv6模块(TQ2440开发板)

    TQ2440开发板自带的内核镜像(Linux-2.6.30.4)并没有支持IPv6协议栈,对网卡添加IPv6地址是不被允许的,出现"ifconfig: socket: Address fam ...

  10. linux 2440网卡驱动,Linux-2.6.30平台下移植DM9000网卡驱动到TQ2440

    平台:虚拟机Ubuntu 12.04  内核:linux-2.6.30 开发板:TQ2440 包括编译内核.制作文件系统,到目前可以在虚拟机上可以通过交叉网线可以和开发板互通,用了弄了差不多快两天时间 ...

最新文章

  1. MySql8.0.19最新版本创建用户分配权限演示,You have an error in your SQL syntax权限分配问题解决方法
  2. 计算机系统唯一能识别的不需要翻译,计算机习题答案及解析ban.doc
  3. 进程间的通讯(IPC)方式
  4. vue 工作项目中 实现消息列表的 全选,反选,删除功能
  5. 洛谷——P1568 赛跑
  6. JCheckBox 默认选择_了解GoldWave使用习惯的一些默认设置
  7. tcl语言读取文件一行_TCL语言(九) 路径和文件
  8. java 通过经纬度计算巨鹿,中国主要城市经纬度查询
  9. ESP_Easy BME280 WIFI MQTT传感器制作
  10. 如何将NCM转换成MP3 - NCM转MP3转换软件
  11. 离散数学知识点总结(3):等值演算,16个命题定律 / 基础等价式,重言式的替换规则,证明有效性和可满足性的方法
  12. 雷军做程序员时写的博客,真心强啊。。
  13. maya多边形建模怎样做曲面_maya多边形建模教程_maya建模教程
  14. Android即时通讯和sns开源项目汇总
  15. java web没有APP流行_简单粗暴,详细得不要不要的 JavaWeb快速入门
  16. 上午写了一段代码,下午就被开除了。。。
  17. Gym101635C Macarons
  18. 短信包对比 - 2021.5
  19. 进击3D游戏界!Cocos Creator快速实现骨骼动画交互!
  20. 微信小程序 Springboot校运会高校运动会管理系统

热门文章

  1. Spring IOC 容器源码分析 - 填充属性到 bean 原始对象
  2. 160家优秀国外技术公司博客
  3. ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能
  4. Deep Learning简明深度学习方法概述
  5. 聚类(1)——混合高斯模型 Gaussian Mixture Model
  6. Matlab中断语句
  7. 【题解】P4124 [CQOI2016]手机号码
  8. APP启动速度是门面,如何做到极致优化?
  9. 离散数学及其应用 (Kenneth H·Rosen 著)
  10. 安装中文语言包会导致 Troubleshoot Compatibility 失败