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

📄 kb.c

📁 ARM7开发板44B0的无操作系统测试程序。
💻 C
字号:
#include <string.h>
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\kb.h"
#include "..\inc\option.h"
#include "..\inc\def.h"

/*********************************************************/
#define EXTINT4     0
#define EXTINT5     1
#define EXTINT6     2
#define EXTINT7     3

#define EXTINT4567  21

#define INTTRIG_LOW          0x00
#define INTTRIG_HIGH         0x01
#define INTTRIG_FALLING      0x02
#define INTTRIG_RISING       0x04
#define INTTRIG_BOTHEDGE     0x05

void Test_Kb(void)
{
  U32 dwVal;

  //设置IO 口PORT G
  rPCONG |= 0xff00;

  //设置中断
  rINTMOD &= ~MASK_BIT(EXTINT4567); //设置EXTINT4,5,6,7为IRQ中断
  rINTCON &= ~MASK_BIT(1);                //IRQ 中断使能

  //设置EXTINT4,5,6,7中断模式,我们这里使用低电平触发
  rEXTINT &= 0xffff;    //先清除EXTINT4,5,6,7的相应设置bit位

  Uart_Printf ("1*4 Keyboard Test Program.\n");
  Uart_Printf ("Press Key 0, 1, 2 to light the led 1, 2, 3. Press Key 3 to unlight the all leds.\n");

  while (Uart_GetKey () == 0)
  {
    dwVal = rINTPND;    
    if ((dwVal & MASK_BIT(21)) == 0)
    {
      continue;
    }

     //EXTINTPND 寄存器,判断是哪个外部中断触发
    dwVal = rEXTINTPND;

    if ((dwVal & MASK_BIT(EXTINT4)) != 0)
    {
      rEXTINTPND |= MASK_BIT(EXTINT4);
      //外部中断4 产生了,点亮LED1
      sysUtilsLightLed (LED1, TRUE);
    }

    if ((dwVal &  MASK_BIT(EXTINT5)) != 0)
    {
      rEXTINTPND |= MASK_BIT(EXTINT5);
      //外部中断4 产生了,点亮LED2
      sysUtilsLightLed (LED2, TRUE);
    }

    if ((dwVal &  MASK_BIT(EXTINT6)) != 0)
    {
      rEXTINTPND |= MASK_BIT(EXTINT6);
      //外部中断4 产生了,点亮LED3
      sysUtilsLightLed (LED3, TRUE);
    }

    if ((dwVal &  MASK_BIT(EXTINT7)) != 0)
    {
      rEXTINTPND |= MASK_BIT(EXTINT7);
      //外部中断4 产生了,点亮LED1,2,3
      sysUtilsLightLed (LED_ALL, FALSE);
    }
    //最后清除中断位
    //rI_ISPC |= MASK_BIT(21);
    rI_ISPC = dwVal;
  }
}

⌨️ 快捷键说明

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