嵌入式裸机程序之点亮LED
1.GPIO介绍
S3C2440A包含130个多功能输入输出引脚,共分为9组:GPA~GPJ。通过查看数据手册,可知每组接口有GPxCON,端口配置寄存器;GPxDAT,端口数据寄存器;GPxUP,端口上拉寄存器;但并不是每组GPIO都包含全部寄存器。除此之外,还有杂项控制寄存器、外部中断寄存器等。
2.本节目标
本节介绍最简单的GPIO应用——点亮LED灯。在程序模板的基础下,修改程序。需要准备的文档:S3C2440数据手册,TQ2440开发板电路原理图。
通过查看电路原理图,TQ2440的LED在GPB5~GPB8
通过查看数据手册,要控制一个GPIO需要配置GPxDAT、GPxCON、GPxUP三组寄存器即可。
3.程序分析
程序已保存在GPIO文件夹中,可在我的Github中浏览,这里只介绍关键的部分。
宏定义:
1 |
|
这部分主要为定义4个GPIO的设置准备,将这4个IO接口设置为输出模式。
1 |
|
在主程序中,先设置GPB的5~8位设置为输出,通过逻辑与,生成需要设置给GPBCON的最终结果。
因GPBUP寄存器默认值为0x0,即使能上拉功能,在此不需修改。
1 |
|
在设置好GPBCON后,设置一个大循环,给GPBDAT设置不同的值来控制LED引脚的高低电位。程序效果为LED亮500ms暗500ms。通过一个变量的最低位值来确定亮暗状态。
程序中,i变量数值范围为0~255,但实际并未设置超出范围后重置变量值,这是因为在i到达255后再加1其值会变为0。
点亮LED通常是学习单片机的第一节课,ARM裸机程序也是如此。程序中,有部分代码是在后面学习才会涉及到的,这里只需会用即可。建议自己再翻阅芯片数据手册,更详细地了解GPIO的使用规则。
嵌入式裸机程序之点亮LED
http://atime.cc/2012/02/01/嵌入式裸机程序之点亮LED/