Cortex-M3 (NXP LPC1788)之GPIO
经过前一篇的分析,现在可以进入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相关推荐
- (转)Cortex-M3 (NXP LPC1788)之GPIO
经过前一篇的分析,现在可以进入C环境进行各个模块的学习.首先进行简单的GPIO控制LED灯的操作,开发板通过GPIO1.18控制LED灯,电路如下图: 为了对LPC1788的内部结构有更好的理解和学习 ...
- Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)
架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...
- Cortex-M3 (NXP LPC1788)之RTC
实时时钟是一组用于测量时间的计数器,如果使用电池供电,在系统掉电以后它也可以正常运行以记录系统的时间.LPC1788时钟采用内部的32K振荡器输出1HZ的时钟信号做为RTC的时钟源. RTC的寄存器比 ...
- Cortex M3 NVIC与中断控制
Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...
- Cortex M3内核架构
CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...
- Cortex M3 Bit-banding简介
http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...
- cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等
cortex m3 开源 您好,开放游戏迷! 在本周的版本中,我们将了解Steam的1.25亿活跃帐户和Game Developers Conference,这是一个开源增强现实头戴设备,Linux游 ...
- cortex m3的操作模式和状态
1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...
- cortex m3/m4处理器的复位设计
cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...
- stm32 cortex M3 汇编指令集 英文详解
这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...
最新文章
- 函数空间中的最佳逼近
- (9)C#之ADO.NET 两个ListBox联动案例
- weblogic10.3.6配置nodemanager
- 计算机视觉工具包Luminoth
- 微服务网关的设计与实现
- php子类选择器代码,php – 可变产品选择器:获取实时选定值
- 路由选择协议笔记ripv1、ripv2、ripng
- python matplotlib数据可视化_Python - matplotlib 数据可视化
- 渗透实例:The Game Of Bob_1.0.1
- 手写instanceof (详解原型链) 和 实现绑定解绑和派发的事件类
- 二叉树遍历的一些非递归算法
- wget: unable to resolve host address的解决方法
- visio导出图片模糊的解决方案
- volatility内存取证分析与讲解(持续更新)
- ipv6 无状态地址管理
- 微信h5页面禁止下拉方法
- nodejs-CentOS64下载安装配置
- JAVA编程:编写手机投屏电脑程序
- 零零散散之Java异常
- 裸眼3D LED显示屏,是未来趋势还是行业自嗨?