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

📄 bsp.c

📁 NXP LPC系列AMR7的开发程序源码(LCD
💻 C
📖 第 1 页 / 共 2 页
字号:

void BSP_ClrLED(unsigned int Mask)
{
  if(Mask & (1UL<<0))
  {
    IO1SET =  (1 << _PORT1_LED1_BIT);    // Switch off LED 1
  }
  if(Mask & (1UL<<1))
  {
    IO1SET =  (1 << _PORT1_LED2_BIT);    // Switch off LED 2
  }
  if(Mask & (1UL<<2))
  {
    IO1SET =  (1 << _PORT1_LED3_BIT);    // Switch off LED 3
  }
  if(Mask & (1UL<<3))
  {
    IO1SET =  (1 << _PORT1_LED4_BIT);    // Switch off LED 4
  }
  if(Mask & (1UL<<4))
  {
    IO1SET =  (1 << _PORT1_LED5_BIT);    // Switch off LED 5
  }
  if(Mask & (1UL<<5))
  {
    IO1SET =  (1 << _PORT1_LED6_BIT);    // Switch off LED 6
  }
  if(Mask & (1UL<<6))
  {
    IO1SET =  (1 << _PORT1_LED7_BIT);    // Switch off LED 7
  }
  if(Mask & (1UL<<7))
  {
    IO1SET =  (1 << _PORT1_LED8_BIT);    // Switch off LED 8
  }
  if(Mask & (1UL<<8))
  {
    IO0SET =  (1 << _PORT0_LED9_BIT);    // Switch off LED 9
  }
  if(Mask & (1UL<<9))
  {
    IO0SET =  (1 << _PORT0_LED10_BIT);   // Switch off LED 10
  }
  if(Mask & (1UL<<10))
  {
    IO1SET =  (1 << _PORT1_LED11_BIT);   // Switch off LED 11
  }
  if(Mask & (1UL<<11))
  {
    IO1SET =  (1 << _PORT1_LED12_BIT);   // Switch off LED 12
  }
  if(Mask & (1UL<<12))
  {
    IO0SET =  (1 << _PORT0_LED13_BIT);   // Switch off LED 13
  }
  if(Mask & (1UL<<13))
  {
    IO0SET =  (1 << _PORT0_LED14_BIT);   // Switch off LED 14
  }
  if(Mask & (1UL<<14))
  {
    IO0SET =  (1 << _PORT0_LED15_BIT);   // Switch off LED 15
  }
  if(Mask & (1UL<<15))
  {
    IO0SET =  (1 << _PORT0_LED16_BIT);   // Switch off LED 16
  }
}

void BSP_ToggleLED(unsigned int Mask)
{

  if(Mask & (1UL<<0))
  {
    if(IO1PIN & (1 << _PORT1_LED1_BIT))
    {
      BSP_SetLED((1UL<<0));
    }
    else
    {
      BSP_ClrLED((1UL<<0));
    }
  }
  if(Mask & (1UL<<1))
  {
    if(IO1PIN & (1 << _PORT1_LED2_BIT))
    {
      BSP_SetLED(1UL<<1);
    }
    else
    {
      BSP_ClrLED(1UL<<1);
    }
  }
  if(Mask & (1UL<<2))
  {
    if(IO1PIN & (1 << _PORT1_LED3_BIT))
    {
      BSP_SetLED(1UL<<2);
    }
    else
    {
      BSP_ClrLED(1UL<<2);
    }
  }
  if(Mask & (1UL<<3))
  {
    if(IO1PIN & (1 << _PORT1_LED4_BIT))
    {
      BSP_SetLED(1UL<<3);
    }
    else
    {
      BSP_ClrLED(1UL<<3);
    }
  }
  if(Mask & (1UL<<4))
  {
    if(IO1PIN & (1 << _PORT1_LED5_BIT))
    {
      BSP_SetLED(1UL<<4);
    }
    else
    {
      BSP_ClrLED(1UL<<4);
    }
  }
  if(Mask & (1UL<<5))
  {
    if(IO1PIN & (1 << _PORT1_LED6_BIT))
    {
      BSP_SetLED(1UL<<5);
    }
    else
    {
      BSP_ClrLED(1UL<<5);
    }
  }
  if(Mask & (1UL<<6))
  {
    if(IO1PIN & (1 << _PORT1_LED7_BIT))
    {
      BSP_SetLED(1UL<<6);
    }
    else
    {
      BSP_ClrLED(1UL<<6);
    }
  }
  if(Mask & (1UL<<7))
  {
    if(IO1PIN & (1 << _PORT1_LED8_BIT))
    {
      BSP_SetLED(1UL<<7);
    }
    else
    {
      BSP_ClrLED(1UL<<7);
    }
  }
  if(Mask & (1UL<<8))
  {
    if(IO0PIN & (1 << _PORT0_LED9_BIT))
    {
      BSP_SetLED(1UL<<8);
    }
    else
    {
      BSP_ClrLED(1UL<<8);
    }
  }
  if(Mask & (1UL<<9))
  {
    if(IO0PIN & (1 << _PORT0_LED10_BIT))
    {
      BSP_SetLED(1UL<<9);
    }
    else
    {
      BSP_ClrLED(1UL<<9);
    }
  }
  if(Mask & (1UL<<10))
  {
    if(IO1PIN & (1 << _PORT1_LED11_BIT))
    {
      BSP_SetLED(1UL<<10);
    }
    else
    {
      BSP_ClrLED(1UL<<10);
    }
  }
  if(Mask & (1UL<<11))
  {
    if(IO1PIN & (1 << _PORT1_LED12_BIT))
    {
      BSP_SetLED(1UL<<11);
    }
    else
    {
      BSP_ClrLED(1UL<<11);
    }
  }
  if(Mask & (1UL<<12))
  {
    if(IO0PIN & (1 << _PORT0_LED13_BIT))
    {
      BSP_SetLED(1UL<<12);
    }
    else
    {
      BSP_ClrLED(1UL<<12);
    }
  }
  if(Mask & (1UL<<13))
  {
    if(IO0PIN & (1 << _PORT0_LED14_BIT))
    {
      BSP_SetLED(1UL<<13);
    }
    else
    {
      BSP_ClrLED(1UL<<13);
    }
  }
  if(Mask & (1UL<14))
  {
    if(IO0PIN & (1 << _PORT0_LED15_BIT))
    {
      BSP_SetLED(1UL<<14);
    }
    else
    {
      BSP_ClrLED(1UL<<14);
    }
  }
  if(Mask & (1UL<<15))
  {
    if(IO0PIN & (1 << _PORT0_LED16_BIT))
    {
      BSP_SetLED(1UL<<15);
    }
    else
    {
      BSP_ClrLED(1UL<<15);
    }
  }
}

/*********************************************************************
*
*       Buttons routines
*/
ButtonError_t BSP_GetButton(unsigned int Id, unsigned int * pCount)
{
volatile unsigned int To = _BUT_MAX_SCAN_PER;
unsigned int Count, Hold, MasterMask, SlaveMask;
volatile unsigned long *pMasterReg, *pSlaveReg;

  assert(Id <= _CAP_BUTTONS_NUMB);
  if(Id & 1)
  {
    pMasterReg = (volatile unsigned long * )ButtonsCtrl[Id>>1].Ba.pButBaseReg;
    MasterMask = 1UL << ButtonsCtrl[Id>>1].Ba.ButBit;
    pSlaveReg  = (volatile unsigned long * )ButtonsCtrl[Id>>1].Bb.pButBaseReg;
    SlaveMask  = 1UL << ButtonsCtrl[Id>>1].Bb.ButBit;
  }
  else
  {
    pMasterReg = (volatile unsigned long * )ButtonsCtrl[Id>>1].Bb.pButBaseReg;
    MasterMask = 1UL << ButtonsCtrl[Id>>1].Bb.ButBit;
    pSlaveReg  = (volatile unsigned long * )ButtonsCtrl[Id>>1].Ba.pButBaseReg;
    SlaveMask  = 1UL << ButtonsCtrl[Id>>1].Ba.ButBit;
  }

  // Button scan algorithm
  // 1. Starting state Ba-o1 (Port Ba Output H), Bb-o1
  // 2. Set Ba i (input)
  *(pSlaveReg + _PDIR_OFFSET) &= ~SlaveMask;
  // 3. Set Bb o0
  OS_DI();
  T1TCR_bit.CE = 1; // enable Timer
  *(pMasterReg + _PCLR_OFFSET) = MasterMask;
  // 4. wait and counting until Ba state get 0
  Count = T1TC;
  while(*(pSlaveReg + _PIN_OFFSET) & SlaveMask)
  {
    if(!To)
    {
      break;
    }
    --To;
  }
  Hold = T1TC - Count;
  OS_EI();
  // 5. Ba o0
  *(pSlaveReg + _PCLR_OFFSET)  = SlaveMask;
  *(pSlaveReg + _PDIR_OFFSET) |= SlaveMask;
  // 6. Set Ba i
  *(pSlaveReg + _PDIR_OFFSET) &= ~SlaveMask;
  // 7. Set Bb o1
  OS_DI();
  Count = T1TC;
  *(pMasterReg + _PSET_OFFSET) = MasterMask;
  // 8. wait and counting until Ba state get 1
  while(!(*(pSlaveReg + _PIN_OFFSET) & SlaveMask))
  {
    if(!To)
    {
      break;
    }
    --To;
  }
  Hold += T1TC - Count;
  OS_EI();
  T1TCR_bit.CE = 0;  // disable Timer
  // 9. Set Ba o1
  *(pSlaveReg + _PSET_OFFSET)  = SlaveMask;
  *(pSlaveReg + _PDIR_OFFSET) |= SlaveMask;
  if(!To)
  {
    return(BUTT_TO_ERROR);
  }

  if(To == _BUT_MAX_SCAN_PER)
  {
    return(BUTT_SHORT_ERROR);
  }

  *pCount = Hold;
  return(BUTT_OK);
}


/****** EOF *********************************************************/

⌨️ 快捷键说明

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