GPIO使用
LPC2478的GPIO是不能断开时钟的,上电就连接.处理GPIO主要就下面几步
1. 设置为普通IO模式
2. 设置输入输出方向
3. 设置值
以下寄存器
用于选择管脚是基本输入输出还是复用功能
设置管脚是否具有上拉电阻
其中,LPC的管脚分为两种,一种是传统GPIO还有一种是高速GPIO,其实严格来说,所有的管脚都是高速管脚,但是为了兼容之前的软件和程序,可以使用之前的访问模式访问GPIO,说明如下
设置管脚方向
这个寄存器只能写1有效,写1将对应管脚高电平,写0不会将对应管脚低电平
需要将对应管脚低电平靠这个寄存器,但是这个寄存器不能控制管脚高电平
通过该寄存器获取相应端口的输入
这个寄存器的意思是说:将指定位的数据屏蔽,也就是说在这个寄存器中写入1的那一位,我们无法通过写入寄存器的方式控制他的电平也不能读取到他的当前有效电平,也就是说,那个管脚被锁住了
以下是使用代码,全部使用FIO高速管脚模式驱动
#ifndef __GPIO_H_
#define __GPIO_H_
#include "lpc24xx.h"
#include "common.h"
//p1 5输出 P2 10输入
void GPIOInit(void);
void GPIOSet(u8 value);
u8 GPIOGet(void);
#endif
#include "gpio.h"
//p1 5输出 P2 10输入
void GPIOInit(void)
{
SCS |= (1<<0);//设置高速寄存器组方式访问端口
PINSEL2 &= ~(3<<10);//选择 p1 5 p2 10 为GPIO管脚
PINSEL4 &= ~(3<<20);
PINMODE2 &= ~(3<<10);//全部使能上拉电阻
PINMODE4 &= ~(3<<20);
FIO1DIR |= 1<<5; //P1 5输出
FIO2DIR &= ~(1<<10);//P2 10输入
FIO1MASK = 0x00;
FIO2MASK = 0x00;//将1和2的数据掩码全部清除
}
void GPIOSet(u8 value)
{
if(value)FIO1SET |= (1<<5);
else FIO1CLR |= (1<<5);
}
//p2 10 按下高电平 平时低电平
u8 GPIOGet(void)
{
if((FIO2PIN&(1<<10)) == 0)
{
return 1;
}
else
{
return 0;
}
}
需要注意的是,对于P0和P1当使用FIO驱动的时候需要修改SCS修改系统控制寄存器,如下
否则就算是写入了FIO寄存器也不会体现在实际管脚上
关键字:LPC2478 GPIO
引用地址:
LPC2478的GPIO使用详解
推荐阅读最新更新时间:2024-03-16 15:30
STM32CubeMX学习教程之二:GPIO输入之外部中断
本篇主要讲述GPIO外部中断输入检测,实际物理输入方式是按键,但是实际上更适合外部设备信号的输入检测,物理按键输入因为有抖动,还需要硬件或者软件去抖才比较可靠。这个例子不考虑防抖的情况。 软件版本: STM32CubeMX V4.25.0 System Workbench V2.4 硬件:OneNet 麒麟座V2.3 在STM32CubeMX中新建项目,选择正确的MCU型号 设置RCC和SYS,然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M) 根据板子的具体连接设置4个GPIO_OUTPUT (连接到LED)和4个GPIO_EXIT*(外部中断模式,
[单片机]
STM32F4学习笔记之GPIO(使用固件库)
1.使能GPIO的AHB时钟,使用函数: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE); 2.配置GPIO工作模式用GPIO_Init()函数 数据类型说明 typedef struct { uint32_t GPIO_Pin; //引脚配置 GPIOMode_TypeDef GPIO_Mode; //GPIO_Mode_IN(输入),GPIO_Mode_OUT(输出),GPIO_Mode_AF(备用),GPIO_Mode_AN(模拟) GPIOSpeed_TypeDef GPIO_Speed;// GPIO_Speed_2MHz,GPIO_Spe
[单片机]
IAR FOR STM8 学习笔记 固件库 GPIO
经过一番挣扎,还是决定使用官方的固件库了。。 从网上下一个STM8S的固件库,记得是FOR IAR的。 找到里面的IAR模板就可以开始用了。 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先了解些必备知识。 STM8的寄存器的地址 在STM8中,与某个外围设备有关的寄存器在地址上都是顺序排列的;比如与GPIO有关的寄存器有ODR、IDR、DDR、CR1、CR2,与PA口有关的这五个寄存器就被安排在了0x00 5000~0x00 5004这5个地址空间中,它们有一个0x005000的基地址,分别偏移0,1,2,3,4。 ”stm8s.h 中与GPIO有关的定义,以及固件库中访问外围设备寄存器的方法
[单片机]
02-JZ2440裸机学习之GPIO实验
一:汇编点亮一个LED 1看原理图 2设置寄存器,配置引脚 3代码现 @****************************************************************************** @ File:led_on.S @ 功能:LED点灯程序,点亮LED1 @****************************************************************************** .text .global _start _start: LDR R0,=0x56000050 @ R0设为G
[单片机]
STM32F0xx_ GPIO配置详细过程
前言 对于初学STM32的人来说,很多基础的知识没有掌握,这些基础知识就成为阻挡他们入门的门槛。因此,今天也把基础的知识分享出来,带领那些还没有迈过这个门槛的人入门。 今天总结“GPIO配置详细”,以F0标准外设库初始化结构体来重点讲解。接着昨天“新建软件工程详细过程”来进行讲解,今天分两大部分内容总结。工程描述、IO配置源代码详细讲解。 ST标准外设库和参考手册、数据手册等都可以在ST官网下载的到(请自行下载)。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议使用这个,以后如果你换用一种型号芯片也方便了解。 今天提供下载的软件
[单片机]
stm32学习之十
USART,AD与GPIO的温度传感器: 注意的是: 1、ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5); 2、ADC_TempSensorVrefintCmd(ENABLE); 依照上一节的程序,可以改写以下,形成现在的程序与效果: add.h和add.h(写成这种方式,原因与上一节一样) add.h的代码: #ifndef _ADD_H #define _ADD_H #include stm32f10x.h //对于12位的ADC,3.3V的ADC值为0xfff,温度为25度时对应的电压值为1.43V即0
[单片机]
STM32个人学习笔记-第二集(F4GPIO寄存器介绍)
一,GPIO口寄存器 GPIO有九组IO口,分别用大写字母表示,即,x=A/B/C/D/E/F/G/H/I. IO口可以由软件配置成如下8种模式 1,输入浮空 2,输入上拉 3,输入下拉 4,模拟输入 5,开漏输出 6,推挽输出 7,推挽式复用功能 8,开漏式复用功能 二,IO口常用的8个寄存器 1,MODER寄存器 该寄存器是GPIO端口模式控制寄存器,用于控制IO口的工作模式 每组IO下有16个IO口,该寄存器共32位,每2个位控制1个IO,不同设置所对应的模式见上表 2,OTYPER寄存器 这个寄存器用于控制GPIO的输出类型,低16位有效,每一个位控制一个IO口,复位后该寄存器值都是0 3,OS
[单片机]
MCF51QE128快速GPIO的外部总线接口设计
引 言
外部总线接口大都出现在功能和价格较高的高端微处理器中。例如,Freescale半导体公司生产的Coldfire和PowerPC微处理器,在低端的微控制器行列中,一般很少出现,主要原因是微控制器一般内部包含了Flash和SRAM,而不是像微处理器那样需要外扩大容量存储器放置代码和运行程序。但是,微控制器也会遇到需要外扩外部总线设备的情况,笔者在某项目中需要使用MCF51QE128(以下简称“QE128”)微控制器连接外部Flash存储测试数据,存取速度要求较高,因此无法使用串行接口的存储器,只能使用具有地址线和数据线的Flash存储器。
QE128是Freescale半导体公司推出的Flexis系列的首款产
[嵌入式]