📄 bsp.c
字号:
/*
*********************************************************************************************************
* BSP_PB_Init()
*
* Description : Initialize the board's PB.
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : BSP_Init().
*
* Note(s) : none.
*********************************************************************************************************
*/
static void BSP_PB_Init (void)
{
GPIO_InitTypeDef gpio_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
gpio_init.GPIO_Pin = BSP_GPIOD_PB_KEY1;
gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &gpio_init);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
gpio_init.GPIO_Pin = BSP_GPIOD_PB_KEY2;
gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &gpio_init);
}
/*
*********************************************************************************************************
* BSP_PB_GetStatus()
*
* Description : Get the status of a push button on the board.
*
* Argument(s) : pb The ID of the push button to probe
*
* 1 probe the user push button
*
* Return(s) : DEF_FALSE if the push button is pressed.
* DEF_TRUE if the push button is not pressed.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
CPU_BOOLEAN BSP_PB_GetStatus (CPU_INT08U pb)
{
CPU_BOOLEAN status;
CPU_INT32U pin;
status = DEF_FALSE;
switch (pb) {
case BSP_PB_ID_KEY1:
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_PB_KEY1);
if (pin == 0) {
status = 1;
}
break;
case BSP_PB_ID_KEY2:
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_PB_KEY2);
if (pin == 0) {
status = 2;
}
break;
default:
break;
}
return (status);
}
/*
*********************************************************************************************************
*********************************************************************************************************
* JOYSTICK FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_Joystick_Init()
*
* Description : Initialize the board's joystick.
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : BSP_Init().
*
* Note(s) : none.
*********************************************************************************************************
*/
static void BSP_Joystick_Init (void)
{
GPIO_InitTypeDef gpio_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
/* Configure JOY_UP, JOY_SEL, JOY_DOWN. */
gpio_init.GPIO_Pin = BSP_GPIOD_JOY_UP | BSP_GPIOD_JOY_SEL | BSP_GPIOD_JOY_DOWN|BSP_GPIOD_JOY_LEFT | BSP_GPIOD_JOY_RIGHT;
gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &gpio_init);
}
/*
*********************************************************************************************************
* BSP_Joystick_GetStatus()
*
* Description : Get the status of the joystick on the board.
*
* Argument(s) : none.
*
* Return(s) : Bit-mapped status of joystick :
*
* BSP_JOYSTICK_CENTER if the joystick is being pressed.
* BSP_JOYSTICK_LEFT if the joystick is toggled left.
* BSP_JOYSTICK_RIGHT if the joystick is toggled right.
* BSP_JOYSTICK_UP if the joystick is toggled up.
* BSP_JOYSTICK_DOWN if the joystick is toggled down.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
CPU_INT32U BSP_Joystick_GetStatus (void)
{
CPU_BOOLEAN pin;
CPU_BOOLEAN status;
status = 0;
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_JOY_RIGHT);
if (pin == 0) {
status |= BSP_JOYSTICK_RIGHT;
}
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_JOY_LEFT);
if (pin == 0) {
status |= BSP_JOYSTICK_LEFT;
}
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_JOY_UP);
if (pin == 0) {
status |= BSP_JOYSTICK_UP;
}
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_JOY_DOWN);
if (pin == 0) {
status |= BSP_JOYSTICK_DOWN;
}
pin = GPIO_ReadInputDataBit(GPIOD, BSP_GPIOD_JOY_SEL);
if (pin == 0) {
status |= BSP_JOYSTICK_CENTER;
}
return (status);
}
/*
*********************************************************************************************************
*********************************************************************************************************
* LED FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_LED_Init()
*
* Description : Initialize the I/O for the LEDs
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : BSP_Init().
*
* Note(s) : none.
*********************************************************************************************************
*/
static void BSP_LED_Init (void)
{
GPIO_InitTypeDef gpio_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
gpio_init.GPIO_Pin = BSP_GPIOC_LED1 | BSP_GPIOC_LED2 | BSP_GPIOC_LED3 | BSP_GPIOC_LED4;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &gpio_init);
}
/*
*********************************************************************************************************
* BSP_LED_On()
*
* Description : Turn ON any or all the LEDs on the board.
*
* Argument(s) : led The ID of the LED to control:
*
* 0 turn ON all LEDs on the board
* 1 turn ON LED 1
* 2 turn ON LED 2
* 3 turn ON LED 3
* 4 turn ON LED 4
*
* Return(s) : none.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
void BSP_LED_On (CPU_INT08U led)
{
switch (led) {
case 0:
GPIO_SetBits(GPIOC, BSP_GPIOC_LED1 | BSP_GPIOC_LED2 | BSP_GPIOC_LED3 | BSP_GPIOC_LED4);
break;
case 1:
GPIO_SetBits(GPIOC, BSP_GPIOC_LED1);
break;
case 2:
GPIO_SetBits(GPIOC, BSP_GPIOC_LED2);
break;
case 3:
GPIO_SetBits(GPIOC, BSP_GPIOC_LED3);
break;
case 4:
GPIO_SetBits(GPIOC, BSP_GPIOC_LED4);
break;
default:
break;
}
}
/*
*********************************************************************************************************
* BSP_LED_Off()
*
* Description : Turn OFF any or all the LEDs on the board.
*
* Argument(s) : led The ID of the LED to control:
*
* 0 turn OFF all LEDs on the board
* 1 turn OFF LED 1
* 2 turn OFF LED 2
* 3 turn OFF LED 3
* 4 turn OFF LED 4
*
* Return(s) : none.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
void BSP_LED_Off (CPU_INT08U led)
{
switch (led) {
case 0:
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED1 | BSP_GPIOC_LED2 | BSP_GPIOC_LED3 | BSP_GPIOC_LED4);
break;
case 1:
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED1);
break;
case 2:
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED2);
break;
case 3:
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED3);
break;
case 4:
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED4);
break;
default:
break;
}
}
/*
*********************************************************************************************************
* BSP_LED_Toggle()
*
* Description : TOGGLE any or all the LEDs on the board.
*
* Argument(s) : led The ID of the LED to control:
*
* 0 TOGGLE all LEDs on the board
* 1 TOGGLE LED 1
* 2 TOGGLE LED 2
* 3 TOGGLE LED 3
* 4 TOGGLE LED 4
*
* Return(s) : none.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
void BSP_LED_Toggle (CPU_INT08U led)
{
CPU_INT32U pins;
pins = GPIO_ReadOutputData(GPIOC);
switch (led) {
case 0:
BSP_LED_Toggle(1);
BSP_LED_Toggle(2);
BSP_LED_Toggle(3);
BSP_LED_Toggle(4);
break;
case 1:
if ((pins & BSP_GPIOC_LED1) == 0) {
GPIO_SetBits( GPIOC, BSP_GPIOC_LED1);
} else {
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED1);
}
break;
case 2:
if ((pins & BSP_GPIOC_LED2) == 0) {
GPIO_SetBits( GPIOC, BSP_GPIOC_LED2);
} else {
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED2);
}
break;
case 3:
if ((pins & BSP_GPIOC_LED3) == 0) {
GPIO_SetBits( GPIOC, BSP_GPIOC_LED3);
} else {
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED3);
}
break;
case 4:
if ((pins & BSP_GPIOC_LED4) == 0) {
GPIO_SetBits( GPIOC, BSP_GPIOC_LED4);
} else {
GPIO_ResetBits(GPIOC, BSP_GPIOC_LED4);
}
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -