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

📄 intdemo1.c

📁 easyarm1001_CDROM.rar 需要的快快下载
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: IntDemo1.c
** Last modified Date: 2006-11-15 
** Last Version: v1.0
** Description: Stellaris系列单片机 中断示例程序。
** 
**------------------------------------------------------------------------------------------------------
** Created By: Zhou Lishan
** Created date: 2006-11-15 
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/

#define HWREG(x)				(*((volatile unsigned long *)(x)))
#define SYSCTL_RCGC2			0x400fe108      // 运行模式时钟门控寄存器2
#define GPIO_O_DIR				0x00000400	// 数据方向寄存器
#define GPIO_O_AFSEL			0x00000420	// 模式控制寄存器
#define GPIO_O_DATA				0x00000000	// 数据寄存器
#define GPIO_O_IM               0x410
#define GPIO_O_ICR              0x41c
#define GPIO_O_IS               0x404
#define GPIO_O_IEV              0x40c
#define GPIO_PORTB_BASE			0x40005000	// GPIO B 口的基地址
#define NVIC_EN0                0xe000e100  
#define KEY1					(1<<1)	// 定义KEY1
#define LED1					(1<<4)	// 定义LED1

int g_led;

void GPIO_Port_B_ISR(void)
{
unsigned char d;
     // 在调试过程中根据实际情况更改延时参数
	for(d=0;d<50;d++);
	// 读KEY1引脚的值,并判断,如果为高,则熄灭LED1
      if(++g_led & 0x1)
      {
          HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED1 << 2))) = LED1;
      }
      // 否则点亮LED1
      else
      {
          HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED1 << 2))) = ~LED1;
      }

      HWREG(GPIO_PORTB_BASE + GPIO_O_ICR) |= KEY1;
}

  void CPUCpsie(void);	   //开中断
  void	CPUCpsid(void);	  //关中断
//-----------------------------------------------------------------------------
// 函数原形:int main(void)
// 功能描述:主函数
// 参数说明:无
// 返回值:0
//-----------------------------------------------------------------------------
int main(void)
{
  // 使能GPIO PB口
  HWREG(SYSCTL_RCGC2) |= 1<<1;

  // 设置连接KEY1的PB1为输入
  HWREG(GPIO_PORTB_BASE + GPIO_O_DIR) &= ~KEY1;
  HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &= ~KEY1;
 
  // 设置连接LED1的PB4为输出
  HWREG(GPIO_PORTB_BASE + GPIO_O_DIR) |= LED1;
  HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &= ~LED1;
  // 
  HWREG(GPIO_PORTB_BASE + GPIO_O_IS) &= ~KEY1;
  HWREG(GPIO_PORTB_BASE + GPIO_O_IEV) &= ~KEY1;
  HWREG(GPIO_PORTB_BASE + GPIO_O_IM) |= KEY1;
  HWREG(NVIC_EN0 ) = 1<<1;
  
  CPUCpsie();
  while (1);
 
}

⌨️ 快捷键说明

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