⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio_in_out_reg.c

📁 EasyARM615的KEIL下的调试程序,包含IO口,串口,SPI口等
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:           GPIO_IN_OUT_reg.c
** Last modified Date:  2007-04-25 
** Last Version:        v1.0
** Description:         Stellaris系列单片机GPIO口操作
** 
**------------------------------------------------------------------------------------------------------
** Created By:          Pan Yi Fei
** Created date:        2007-04-25 
** Version:             v1.0
** Descriptions:        扫描按键是否按下,如果按键按下则点亮LED指示灯,否则熄灭LED指示灯。
**
**------------------------------------------------------------------------------------------------------
** Modified by:         Kang qinhua
** Modified date:       2008.01.21
** Version:             v1.1
** Description:
**
********************************************************************************************************/
#define HWREG(x)		(*((volatile unsigned long *)(x)))
#define SYSCTL_PERIPH_GPIOD	0x20000008	// GPIO D 在系统控制器中的地址
#define SYSCTL_RCGC2		0x400fe108	// 运行模式时钟门控寄存器2
#define GPIO_O_DIR		0x00000400		// 数据方向寄存器
#define GPIO_O_AFSEL		0x00000420	// 模式控制寄存器
#define GPIO_O_DATA		0x00000000		// 数据寄存器
#define GPIO_PORTD_BASE		0x40007000	// GPIO D 口的基地址
#define KEY1			0x00000010		// 定义KEY1
#define LED1			0x00000080		// 定义LED1

//-----------------------------------------------------------------------------------------------------------------------
// 函数原形:int main(void)
// 功能描述:主函数
// 参数说明:无
// 返回值:0
//-----------------------------------------------------------------------------------------------------------------------
int main(void)
{
  // 使能GPIO PD口
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD & 0x0fffffff;

  // 设置连接KEY1的PD4为输入
  HWREG(GPIO_PORTD_BASE + GPIO_O_DIR) &= ~KEY1;
  HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) &= ~KEY1;
  
  // 设置连接LED1的PD7为输出
  HWREG(GPIO_PORTD_BASE + GPIO_O_DIR) |= LED1;
  HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) &= ~LED1;
  
  while (1)
  {
      // 读KEY1引脚的值,并判断,如果为高,则熄灭LED1
      if(HWREG(GPIO_PORTD_BASE + (GPIO_O_DATA + (KEY1 << 2))))
      {
          HWREG(GPIO_PORTD_BASE + (GPIO_O_DATA + (LED1 << 2))) = LED1;
      }
      // 否则点亮LED1
      else
      {
          HWREG(GPIO_PORTD_BASE + (GPIO_O_DATA + (LED1 << 2))) = ~LED1;
      }
  }
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -