📄 iar-
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
** File Name: GPIO_IN_OUT_reg.c
** Last modified Date: 2007.12.24
** Last Version: V1.1
** Description: Stellaris系列单片机GPIO口操作
**
**--------------------------------------------------------------------------------------------------------
** Created By: Zhou Hai Xin
** Created date: 2007.09.20
** Version: V1.0
** Descriptions: 扫描按键是否按下,如果按键按下则点亮LED指示灯,否则熄灭LED指示灯。
**
**--------------------------------------------------------------------------------------------------------
** Modified by: Kang qinhua
** Modified date: 2008.01.12
** Version: V1.1
** Description:
**
*********************************************************************************************************/
#define HWREG(x) (*((volatile unsigned long *)(x)))
#define SYSCTL_PERIPH_GPIOB 0x20000002 /* GPIO B */
#define SYSCTL_PERIPH_GPIOE 0x20000010 /* GPIO E */
#define SYSCTL_RCGC2 0x400fe108 /* 运行模式时钟门控寄存器2 */
#define GPIO_PORTB_BASE 0x40005000 /* GPIO Port B */
#define GPIO_PORTE_BASE 0x40024000 /* GPIO Port E */
#define GPIO_O_DIR 0x00000400 /* 数据方向寄存器 */
#define GPIO_O_AFSEL 0x00000420 /* 模式控制寄存器 */
#define GPIO_O_DATA 0x00000000 /* 数据寄存器 */
#define GPIO_O_DR4R 0x00000504 /* 4mA驱动选择 */
#define GPIO_O_DEN 0x0000051C /* 数字输入使能 */
#define KEY1 0x00000004 /* 定义KEY1 */
#define LED3 0x00000040 /* 定义LED3 */
/*********************************************************************************************************
** Function name: main
** Descriptions: 通过判断KEY1有没有按下,按下则点亮LED3,否则熄灭LED3。
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main(void)
{
unsigned char i;
HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOB & 0x0fffffff; /* 使能GPIO PB口外设 */
HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOE & 0x0fffffff; /* 使能GPIO PE口外设 */
for (i = 0; i < 4; i++) {
;
}
HWREG(GPIO_PORTE_BASE + GPIO_O_DIR) &= ~KEY1; /* GPIO PE2为输入 */
HWREG(GPIO_PORTE_BASE + GPIO_O_AFSEL) &= ~KEY1; /* PE2为GPIO功能 */
HWREG(GPIO_PORTB_BASE + GPIO_O_DIR) |= LED3; /* GPIO PB6为输出 */
HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &= ~LED3; /* PB6为GPIO功能 */
HWREG(GPIO_PORTE_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DR4R) | KEY1);
/*设置为4mA驱动 */
HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) | KEY1);
/*设置为推挽管脚 */
HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) | LED3);
/*设置为4mA驱动 */
HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) | LED3);
/*设置为推挽管脚 */
while (1) {
if (HWREG(GPIO_PORTE_BASE + (GPIO_O_DATA + (KEY1 << 2)))) { /* 读KEY1引脚的值,并判断, */
/* 如果为高,则熄灭LED3 */
HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED3 << 2))) = LED3;
} else { /* 否则点亮LED3 */
HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED3 << 2))) = ~LED3;
}
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -