从零开始的LED灯(基于嵌入式开发S3C2440)
来源:互联网 发布:女人被强奸 知乎 编辑:程序博客网 时间:2024/05/17 00:44
从零开始的LED灯(基于嵌入式开发S3C2440)
首先我们使用的是TQ2440开发板,嵌入式开发和单片机开发有些不一样,对于初学者来说,硬要将嵌入式的裸机开
发说成单片机开发,我觉得是不当的,首先,大家都玩过51和STM32吧,首先他们的启动都是编译器帮你们写好了的
吧,基本不需要写Makefile,51最简单了,点亮一盏灯,只需要看原理图就可以确定,哪个引脚需要配置成高电平或
者低电平最可以了,然后STM32的开发比51单片机更难的地方就是需要配置引脚的状态(上拉或者输入输出等等),
说白了,ST公司帮你们把他的地址空间分配成一个个寄存器,你需要操作上层的东西就可以了。
但是,嵌入式领域,没有任何人帮助你完全这些东西,甚至你需要从汇编开始写起启动代码,但是你需要知道一点点
会汇编的代码。
1、代码1:点亮一盏LED灯
由上图可以知道LED的点亮需要引脚输出低电平就可以了。
相关的代码:
.text.global _start_start:LDR R0,=0x56000010 @ GPBCON=0x560000010, 就是 //需要修改的GPIO的引脚GPB5mov R1,#0x00000400 //?0001 1001 0000?GPB2:输出引脚 //GPB3:TOUT3 GPB4:输出引脚STR R1,[R0] //把 R0地址写入R1的内容LDR R0,=0x56000014 //后面的道理也是同一样的mov R1,#0x00000000STR R1,[R0]MAIN_LOOP:B MAIN_LOOP
为何是0x56000010和0x56000014,我可以肯定的是STM32不会让你操作地址,很少的地方使用指针和结构体和链表
的东西,但是公司里面写的代码全部都是这些C语言。
根据原理图可以看到那些地方需要使用到那些寄存器,然后可以通过芯片手册查找到相应的代码。
2、代码2;使用C语言学习使用
init.s
.text.global _start_start:ldr r0,=0x53000000 //看门狗的寄存器的地址mov r1,#0x0str r1,[r0] //如果不进行硬件的初始化,那么看门狗会一直复位ldr sp,=1024*4 //设置堆栈,注意不能大于4K,因为片内的内存只有4錕bl mainhalt_loop:b halt_loop
main.c
#define GPBCON (*(volatile unsigned long *)0x56000010) //加上关键字volatile的话,那么就会不断的检查这个地址的
//内容是否总是检查#define GPBDAT (*(volatile unsigned long *)0x56000014)int main(){ GPBCON = 0x00000400; //设置邋錑PB5为输出口,位[11:10]=0b01 GPBDAT = 0x0; //邋錑PB5输出0就是点亮一盏灯 return 0;}
阅读全文
0 0
- 从零开始的LED灯(基于嵌入式开发S3C2440)
- 基于s3c2440的嵌入式开发
- 从零开始的UART(基于S3C2440)
- 嵌入式S3C2440开发板LED灯和按键(去抖)驱动实验
- 基于S3C2440开发板LED灯驱动移植
- ARM开发板(S3C2440)上LED灯驱动及跑马灯的实现
- 基于51单片机开发板的应用(LED灯)
- ARM开发(1) 基于stm32的led跑马灯
- 基于linux2.6.30.4的s3c2440的led字符驱动
- s3c2440上的LED灯的驱动程序
- s3c2440基于linux的gpio led字符设备驱动实践
- s3c2440基于linux的button和led字符设备驱动
- s3c2440基于linux的gpio led字符设备驱动
- s3c2440基于linux的gpio led字符设备驱动实践
- 如何从零开始开发一款嵌入式产品(20年的嵌入式经验)嵌入式, 经验, 开发
- s3c2440嵌入式linux系统LED驱动(lab2)
- 嵌入式内核开发:led灯驱动
- ARM嵌入式编程(无操作系统、基于MDK)之最简单的程序:点亮一个LED灯
- 1.8 Getting Started
- shell脚本之$(),单引号和eval的区别
- groovy Range
- 红米4手机行间距随字体大小变化
- Python 字典常用操作
- 从零开始的LED灯(基于嵌入式开发S3C2440)
- Python字符编码问题-学习记录
- cocos使用中文
- 时间序列常用方法
- vue一知半解的总结
- PAT甲级 1126. Eulerian Path (25)
- 判断程序错误自动写入文件夹0703
- 多参与开源项目,这样你才会获取更多自信
- Java中对构造函数的理解