📄 bsp.c
字号:
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 + -