嵌入式版"Hello world"之流水灯实验

系统 1165 0

在短短的两周内,我们集中学习了ARM体系结构相关课程和ucos基础课程,并第一次深入一个操作系统的内部进行详细的学习探究。

在学习了ucos和相关工具下的demo之后,我终于将汇编、hex、c等底层代码和硬件联系在了一起。一直做web、桌面应用开发,我这次算是体验到了另外的世界和开发思路。

 

关注于:

  1. 代码计数用大小k
  2. 关注效率
  3. 关注空间
  4. 注意赋值--掩码赋值
  5. 学会看芯片时序图
  6. 看清引脚
  7. 等等

下面开始我们的Hello world之旅吧。

在实验室写blog,没有linux环境,所以在描述windows相关操作和技巧时会有疏漏,如果疑问敬请斧正。

 

点灯和闪亮的基本原理:对于一个发光二极管(流水灯的显示器),其发光是电流可正向通过,也就是说两边一边高电压一边低电压。如下图所示,如果上面是高电压,下面是低电压则这个发光二极管就可以亮。


 

首先需要建立一个工程,在这里使用的是一个强大的嵌入式IDE:Keil uVision3. Project->New u...Project->choose a file-> select device -> NXP(LPC2124)->确定拷贝数据


然后,让这个工程在编译完文件后输出hex(用于电路板的二进制文件)文件.

Project-> Options about... -> Output -> Create HEX File

 

最后编码并生成。

绘制电路图,并导入HEX文件。



 电路图的关键:左下方电源的配置连接,发光二极管的电阻连接。

代码结构:

    #include <LPC21xx.h>

//多用宏,不论是迁移还是使用都很方便,而且方便阅读
#define ALL 0x3;//用于灯连接的端口 P0.0 P0.1

unsigned long i;//用于延时计数的变量
int j;

void delay(){
  i=0x000FFFFF;
  while(i)i--;
}

int main(){
  //所有的芯片默认状态时GPIO,输入输出数据口
  IO0DIR = ALL;//对应的二进制数是:0000 0000 0000 0011 ,
               //即对应的P0.0, P0.1口为数据输出口
  j = 0;
  while(1){
    IO0SET = ALL;//导致二极管的两极都为高电位,从而不亮
    j++;
    j%=2;//奇偶计数
    if(j){
      IO0CLR = 0x1; //让P0.0低电压 
    }else{
      IO0CLR = 0x2; //让P0.1低电压  
    }
    delay();
  }
}


  

 细节的讨论还会补充。

 

嵌入式版"Hello world"之流水灯实验


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论