最近刚开始学习ARM1138,今天终于在板子上成功调试了自己的第一个程序,感觉比较爽。顺便记下我的经验。
对于像我一样的新手来说,初次接触ARM感觉他总是很神秘,好像无法前进。不过经过这几天的学习,总算是对这个东西有了一点点了解。刚开始我们应该先看看GPIO相关的一些东西,对这个先有一点初步的印象,不一定非得把它搞透。刚开始只要知道他就是板子中的一个模块,可以负责输入输出的控制,我们靠一组寄存器实现对GPIO的控制。当然我们对这组寄存器的功能和控制方法就要有相应的了解了。
比如说IO0SET = 0X000000FF ,功能就是使作为GPIO功能的P0.0~P0.7输出高电平;IO0CLR = 0X00000080,功能就是使得P0.7输出低电平。类似这些的东西我们可以在学习过程中逐步深入(至少我目前是这么认为的)。了解了这些东西就可以看懂一些简单的程序了。
比如在1138上写个LED点亮的程序。
首先打开IAR 集成开发环境。选择File|Open|Workspace,这里我们选择采用工程模板,也就是开发板光盘中提供的模板,这样我们可以省略自己手动建立工程项目的繁琐程序。如下图所示:
然后在main.c中添加你的代码如下:
#include "systemInit.h"
// 定义LED #define LED_PERIPH SYSCTL_PERIPH_GPIOG #define LED_PORT GPIO_PORTG_BASE #define LED_PIN GPIO_PIN_2
// 主函数(程序入口) int main(void) { jtagWait(); // 防止JTAG失效,重要! clockInit(); // 时钟初始化:晶振,6MHz
SysCtlPeriEnable(LED_PERIPH); // 使能LED所在的GPIO端口 GPIOPinTypeOut(LED_PORT, LED_PIN); // 设置LED所在管脚为输出
for (;;) { GPIOPinWrite(LED_PORT, LED_PIN, 0x00); // 点亮LED SysCtlDelay(150 * (TheSysClock / 3000)); // 延时约150ms
GPIOPinWrite(LED_PORT, LED_PIN, 0xFF); // 熄灭LED SysCtlDelay(850 * (TheSysClock / 3000)); // 延时约850ms } }
|
然后选择Project|Debug,OK!至此我们就完成了。稍待片刻你就可以看到1138上的一个LED灯闪烁起来了。
阅读(1998) | 评论(0) | 转发(0) |