/**********************************************************************
* 公司名称:光电信息学院 *
* 模块名称:MIAN.h *
* 程序设计:漆强 *
* 设计时间:2012.09.13 *
* 版 本 号: 20120913 *
***********************************************************************
* 基本描述
* 采用的主控芯片LPC1768系列CORTEX-M3内核处理器,时钟晶振XT=12MHZ,系统时钟96MHZ
本程序完成按键控制指示灯的操作,按键按下指示灯亮,再次按下指示灯灭
本程序采用库函数的方式编写
***********************************************************************/
#include "LPC17xx.h"
#include "stdio.h"
// 以下为GPIO的库函数
// 定义端口名称
#define GPIO_P0 0
#define GPIO_P1 1
#define GPIO_P2 2
#define GPIO_P3 3
#define GPIO_P4 4
// 定义端口方向名称
#define IN 0
#define OUT 1
// 定义每个端口的引脚序号
#define GPIO_Pin_0 ((unsigned int)0x00000001) /*!< Pin 0 selected */
#define GPIO_Pin_1 ((unsigned int)0x00000002) /*!< Pin 1 selected */
#define GPIO_Pin_2 ((unsigned int)0x00000004) /*!< Pin 2 selected */
#define GPIO_Pin_3 ((unsigned int)0x00000008) /*!< Pin 3 selected */
#define GPIO_Pin_4 ((unsigned int)0x00000010) /*!< Pin 4 selected */
#define GPIO_Pin_5 ((unsigned int)0x00000020) /*!< Pin 5 selected */
#define GPIO_Pin_6 ((unsigned int)0x00000040) /*!< Pin 6 selected */
#define GPIO_Pin_7 ((unsigned int)0x00000080) /*!< Pin 7 selected */
#define GPIO_Pin_8 ((unsigned int)0x00000100) /*!< Pin 8 selected */
#define GPIO_Pin_9 ((unsigned int)0x00000200) /*!< Pin 9 selected */
#define GPIO_Pin_10 ((unsigned int)0x00000400) /*!< Pin 10 selected */
#define GPIO_Pin_11 ((unsigned int)0x00000800) /*!< Pin 11 selected */
#define GPIO_Pin_12 ((unsigned int)0x00001000) /*!< Pin 12 selected */
#define GPIO_Pin_13 ((unsigned int)0x00002000) /*!< Pin 13 selected */
#define GPIO_Pin_14 ((unsigned int)0x00004000) /*!< Pin 14 selected */
#define GPIO_Pin_15 ((unsigned int)0x00008000) /*!< Pin 15 selected */
#define GPIO_Pin_16 ((unsigned int)0x00010000) /*!< Pin 16 selected */
#define GPIO_Pin_17 ((unsigned int)0x00020000) /*!< Pin 17 selected */
#define GPIO_Pin_18 ((unsigned int)0x00040000) /*!< Pin 18 selected */
#define GPIO_Pin_19 ((unsigned int)0x00080000) /*!< Pin 19 selected */
#define GPIO_Pin_20 ((unsigned int)0x00100000) /*!< Pin 20 selected */
#define GPIO_Pin_21 ((unsigned int)0x00200000) /*!< Pin 21 selected */
#define GPIO_Pin_22 ((unsigned int)0x00400000) /*!< Pin 22 selected */
#define GPIO_Pin_23 ((unsigned int)0x00800000) /*!< Pin 23 selected */
#define GPIO_Pin_24 ((unsigned int)0x01000000) /*!< Pin 24 selected */
#define GPIO_Pin_25 ((unsigned int)0x02000000) /*!< Pin 25 selected */
#define GPIO_Pin_26 ((unsigned int)0x04000000) /*!< Pin 26 selected */
#define GPIO_Pin_27 ((unsigned int)0x08000000) /*!< Pin 27 selected */
#define GPIO_Pin_28 ((unsigned int)0x10000000) /*!< Pin 28 selected */
#define GPIO_Pin_29 ((unsigned int)0x20000000) /*!< Pin 29 selected */
#define GPIO_Pin_30 ((unsigned int)0x40000000) /*!< Pin 30 selected */
#define GPIO_Pin_31 ((unsigned int)0x80000000) /*!< Pin 31 selected */
#define GPIO_Pin_All ((unsigned int)0xFFFFFFFF) /*!< All pins selected */
/****************************************************************************
** 函数名称:GPIO_GetPointer()
** 函数功能:获取指向选定端口的结构体的指针
** 入口参数:portNum:端口号,用GPIO_Px表示,x表示0-4
** 出口参数:pGPIO:指向选定端口的结构体的指针
** 其他 :内部函数,不被外部调用,仅供本程序调用
*****************************************************************************/
static LPC_GPIO_TypeDef* GPIO_GetPointer(uint8_t portNum)
{
LPC_GPIO_TypeDef *pGPIO = NULL; // 定义指向GPIO结构体的指针并初始化为0
switch (portNum)
{
case 0: pGPIO = LPC_GPIO0; break;
case 1: pGPIO = LPC_GPIO1; break;
case 2: pGPIO = LPC_GPIO2; break;
case 3: pGPIO = LPC_GPIO3; break;
case 4: pGPIO = LPC_GPIO4; break;
default: break;
}
return pGPIO;
}
/****************************************************************************
** 函数名称:GPIO_SetDir()
** 函数功能:设置引脚方向
** 入口参数:portNum :端口号,用GPIO_Px表示,x表示0-4
pinNum :引脚号,用GPIO_Pin_x表示,x表示0-31
dir :引脚方向,用IN和OUT表示
** 出口参数:无
** 其他 :无
*****************************************************************************/
void GPIO_SetDir( unsigned char portNum,unsigned int pinNum, unsigned char dir)
{
// 获取指向要设定端口结构体的指针
LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
// 方向为输出
if (dir)
{
pGPIO->FIODIR |= pinNum;
}
// 方向为输入
else
{
pGPIO->FIODIR &= ~pinNum;
}
}
/****************************************************************************
** 函数名称:GPIO_SetPin()
** 函数功能:设置引脚输出高电平
** 入口参数:portNum :端口号,用GPIO_Px表示,x表示0-4
pinNum :引脚号,用GPIO_Pin_x表示,x表示0-31
** 出口参数:无
** 其他 :无
*****************************************************************************/
void GPIO_SetPin( unsigned char portNum,unsigned int pinNum)
{
// 获取指向要设定端口结构体的指针
LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
pGPIO->FIOSET = pinNum; // 输出高电平
}
/****************************************************************************
** 函数名称:GPIO_ClrPin()
** 函数功能:设置引脚输出低电平
** 入口参数:portNum :端口号,用GPIO_Px表示,x表示0-4
pinNum :引脚号,用GPIO_Pin_x表示,x表示0-31
** 出口参数:无
** 其他 :无
*****************************************************************************/
void GPIO_ClrPin( unsigned char portNum,unsigned int pinNum)
{
// 获取指向要设定端口结构体的指针
LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
pGPIO->FIOCLR = pinNum; // 输出低电平
}
/****************************************************************************
** 函数名称:GPIO_ReadPin()
** 函数功能:读取引脚电平值
** 入口参数:portNum :端口号,用GPIO_Px表示,x表示0-4
pinNum :引脚号,用GPIO_Pin_x表示,x表示0-31
** 出口参数:val:返回引脚电平,1表示高电平,0表示低电平
** 其他 :采用FIOPIN读取引脚状态
*****************************************************************************/
unsigned char GPIO_ReadPin( unsigned char portNum,unsigned int pinNum)
{
unsigned char val ; //返回引脚电平,1表示高电平,0表示低电平
// 获取指向要设定端口结构体的指针
LPC_GPIO_TypeDef *pGPIO = GPIO_GetPointer(portNum);
if( pGPIO->FIOPIN & pinNum ) // 引脚为高电平
{
val =1;
}
else // 引脚为低电平
{
val =0;
}
return(val);
}
int main (void)
{
unsigned long i;
// 设置引脚P2.0和P2.11为GPIO功能
LPC_PINCON ->PINSEL4= LPC_PINCON ->PINSEL4 & 0xFF3FFFFC;
// 设置P2.0---P2.3方向为输出
GPIO_SetDir(GPIO_P2, GPIO_Pin_0,OUT);
GPIO_SetDir(GPIO_P2, GPIO_Pin_1,OUT);
GPIO_SetDir(GPIO_P2, GPIO_Pin_2,OUT);
GPIO_SetDir(GPIO_P2, GPIO_Pin_3,OUT);
// 设置P2.11、P2.12方向的输入
GPIO_SetDir
GPIO.rar_脉冲计数_脉冲计数c程序_节拍
版权申诉
193 浏览量
2022-09-24
07:27:20
上传
评论
收藏 5KB RAR 举报
JaniceLu
- 粉丝: 78
- 资源: 1万+
最新资源
- sony 索尼IMX334摄像头模组电路板AD版硬件PCB图(6层板).zip
- 基于flask和echarts融合交易策略的bitfinex可视化微服务.zip
- 包含了wvp-assist.tar wvp-talk.tar zlmediakit.tar .
- 3r4efgh53wgrf43tw
- 2024新版Java基础从入门到精通全套视频+资料下载
- Spring AI大模型视频教程+ChatGPT视频教程+OpenAI大模型视频教程(资料+视频教程)
- ABB工业机器人教程PDF版本
- 123321123323211
- yolov8实战第八天-pyqt5-yolov8实现车牌识别系统(论文(8700+字+数据集+完整部署代码+代码使用说明)
- 三相桥式全桥整流电路MATALB Simulink仿真文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈