您的位置 首页 被动

Cortex-M3 (NXP LPC1788)之GPIO

经过前一篇的分析,现在可以进入C环境进行各个模块的学习。首先进行简单的GPIO控制LED灯的操作,开发板通过GPIO1.18控制LED灯,电…

经过前一篇的剖析,现在能够进入C环境进行各个模块的学习。首要进行简略的GPIO操控LED灯的操作,开发板经过GPIO1.18操控LED灯,电路如下图:

为了对LPC1788的内部结构有更好的了解和学习,尽管NXP给出了封装好的库函数,可是我将自己编写代码便于直接对内部原理进行剖析。代码如下

  1. #definerFIO1DIR(*(volatileunsigned*)0x20098020)//高速GPIO方向操控寄存器,用于装备管脚的输入或输出,默以为输入
  2. #definerFIO1MASK(*(volatileunsigned*)0x20098030)//高速GPIO屏蔽寄存器,被屏蔽的位将不能进行GPIO的操控操作,默许无效
  3. #definerFIO1PIN(*(volatileunsigned*)0x20098034)//高速GPIO管脚值寄存器,能够操作未被FIOXMASK屏蔽的GPIO端口
  4. #definerFIO1SET(*(volatileunsigned*)0x20098038)//高速GPIO管脚置位寄存器,置一操作使相应位输出高电平
  5. #definerFIO1CLR(*(volatileunsigned*)0x2009803c)//高速GPIO管脚清楚寄存器,置一操作使相应位输出低电平
  6. voidDelay(int);
  7. intmain(void)
  8. {
  9. rFIO1DIR|=(1<<18);//GPIO1.18->OUTPUT
  10. while(1)
  11. {
  12. rFIO1SET|=(1<<18);//输出高电平能够用rFIO1PIN|=(1<<18);
  13. Delay(500000);
  14. rFIO1CLR|=(1<<18);//输出低电平能够用rFIO1PIN&=~(1<<18);
  15. Delay(500000);
  16. }
  17. }
  18. voidDelay(inti)
  19. {
  20. intk;
  21. for(k=0;k
  22. }
  23. voidSystemInit(void)
  24. {
  25. }

程序比较简略,关于GPIO的操作咱们能够运用输出置位寄存器FIOXSET和输出清零寄存器FIOXCLR进行操作,也能够直接运用GPIO管脚值寄存器FIOXPIN进行操作。程序最终写了一个void SystemInit(void)空函数,是因为在发动程序startup_LPC177x_8x.S中 IMPORT SystemInit 声明晰一个外部函数,而且LDR R0, =SystemInit碑文该函数。假如不界说该函数编译会报错。 咱们能够在该函数中进行LPC1788的时钟初始化。咱们的程序中没有进行初始化,依据LPC1788的数据手册,体系上电或任何复位,将运用内部的IRC作为时钟源。然后能够在软件上进行切换,而该切换就能够在void SystemInit(void)中完成。

最终能够运用之前环境建立中介绍的进行Debug调试或许下载程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/265673.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部