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

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

#define rFIO1DIR (*(volatile unsigned*)0x20098020) //高速GPIO 方向控制寄存器,用于配置管脚的输入或输出,默认为输入
#define rFIO1MASK   (*(volatile unsigned*)0x20098030) //高速GPIO 屏蔽寄存器,被屏蔽的位将不能进行GPIO的控制操作,默认无效
#define rFIO1PIN    (*(volatile unsigned*)0x20098034) //高速GPIO 管脚值寄存器,可以操作未被FIOXMASK屏蔽的GPIO端口
#define rFIO1SET    (*(volatile unsigned*)0x20098038) //高速GPIO 管脚置位寄存器,置一操作使相应位输出高电平
#define rFIO1CLR    (*(volatile unsigned*)0x2009803c) //高速GPIO 管脚清楚寄存器,置一操作使相应位输出低电平void Delay(int);
int main(void)
{rFIO1DIR |= (1<<18);//GPIO1.18 -> OUTPUTwhile(1){rFIO1SET |= (1<<18);//输出高电平 可以用 rFIO1PIN |= (1<<18); Delay(500000);rFIO1CLR |= (1<<18);//输出低电平 可以用 rFIO1PIN &= ~(1<<18);Delay(500000);}}void Delay(int i)
{int k;for(k=0; k<i; k++);
}void SystemInit (void)
{}

程序比较简单,对于GPIO的操作我们可以使用输出置位寄存器FIOXSET和输出清零寄存器FIOXCLR进行操作,也可以直接使用GPIO管脚值寄存器FIOXPIN进行操作。

程序最后写了一个void SystemInit(void)空函数,是因为在启动程序startup_LPC177x_8x.S中 IMPORT SystemInit 声明了一个外部函数,并且LDR R0, =SystemInit执行该函数。如果不定义该函数编译会报错。 我们可以在该函数中进行LPC1788的时钟初始化。我们的程序中没有进行初始化,根据LPC1788的数据手册,系统上电或任何复位,将使用内部的IRC作为时钟源。而后可以在软件上进行切换,而该切换就可以在void SystemInit(void)中实现。

最后可以使用之前环境搭建中介绍的进行Debug调试或者下载程序。

本文章转载自 Cortex-M3 (NXP LPC1788)之GPIO

Cortex-M3 (NXP LPC1788)之GPIO相关推荐

  1. (转)Cortex-M3 (NXP LPC1788)之GPIO

    经过前一篇的分析,现在可以进入C环境进行各个模块的学习.首先进行简单的GPIO控制LED灯的操作,开发板通过GPIO1.18控制LED灯,电路如下图: 为了对LPC1788的内部结构有更好的理解和学习 ...

  2. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  3. Cortex-M3 (NXP LPC1788)之RTC

    实时时钟是一组用于测量时间的计数器,如果使用电池供电,在系统掉电以后它也可以正常运行以记录系统的时间.LPC1788时钟采用内部的32K振荡器输出1HZ的时钟信号做为RTC的时钟源. RTC的寄存器比 ...

  4. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  5. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  6. Cortex M3 Bit-banding简介

    http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...

  7. cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等

    cortex m3 开源 您好,开放游戏迷! 在本周的版本中,我们将了解Steam的1.25亿活跃帐户和Game Developers Conference,这是一个开源增强现实头戴设备,Linux游 ...

  8. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  9. cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...

  10. stm32 cortex M3 汇编指令集 英文详解

    这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...

最新文章

  1. 函数空间中的最佳逼近
  2. (9)C#之ADO.NET 两个ListBox联动案例
  3. weblogic10.3.6配置nodemanager
  4. 计算机视觉工具包Luminoth
  5. 微服务网关的设计与实现
  6. php子类选择器代码,php – 可变产品选择器:获取实时选定值
  7. 路由选择协议笔记ripv1、ripv2、ripng
  8. python matplotlib数据可视化_Python - matplotlib 数据可视化
  9. 渗透实例:The Game Of Bob_1.0.1
  10. 手写instanceof (详解原型链) 和 实现绑定解绑和派发的事件类
  11. 二叉树遍历的一些非递归算法
  12. wget: unable to resolve host address的解决方法
  13. visio导出图片模糊的解决方案
  14. volatility内存取证分析与讲解(持续更新)
  15. ipv6 无状态地址管理
  16. 微信h5页面禁止下拉方法
  17. nodejs-CentOS64下载安装配置
  18. JAVA编程:编写手机投屏电脑程序
  19. 零零散散之Java异常
  20. 裸眼3D LED显示屏,是未来趋势还是行业自嗨?

热门文章

  1. 音响在线测试软件,汽车音响调音在线大师班(1):调音第一步,RTA检测播放表现...
  2. win7录屏_win7电脑怎么录屏?这个实用工具给你答案
  3. Javaweb面试题整理
  4. URL转换成IP的过程
  5. 前端字体图标的下载与使用
  6. 如何在JUnit5中使用Mockito
  7. (原创)Lottie动画使用介绍
  8. android静态动画,Android Lottie动画实战踩坑
  9. DP动态规划思想讲解
  10. 弘辽科技:淘宝旧链接如何打新品标?有什么规则?