bsp.c
来自「stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器」· C语言 代码 · 共 699 行 · 第 1/2 页
C
699 行
* ADC FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_ADC_Init()
*
* Description : Initialize the board's ADC
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : BSP_Init().
*
* Note(s) : none.
*********************************************************************************************************
*/
static void BSP_ADC_Init (void)
{
ADC_InitTypeDef adc_init;
GPIO_InitTypeDef gpio_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_StructInit(&gpio_init);
gpio_init.GPIO_Pin = GPIO_Pin_0;
gpio_init.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &gpio_init);
adc_init.ADC_Mode = ADC_Mode_Independent;
adc_init.ADC_ScanConvMode = DISABLE;
adc_init.ADC_ContinuousConvMode = ENABLE;
adc_init.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
adc_init.ADC_DataAlign = ADC_DataAlign_Right;
adc_init.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &adc_init);
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);
ADC_Cmd(ADC1, ENABLE);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
/*
*********************************************************************************************************
* BSP_ADC_GetStatus()
*
* Description : This function initializes the board's ADC
*
* Argument(s) : adc ID of the ADC to probe. For this board, the only legitimate value is 1.
*
* Return(s) : The numerator of the binary fraction representing the result of the latest ADC conversion.
* This value will be a 12-bit value between 0x0000 and 0x0FFF, inclusive.
*
* Caller(s) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
CPU_INT16U BSP_ADC_GetStatus (CPU_INT08U adc)
{
CPU_INT16U result;
result = 0;
if (adc == 1) {
result = ADC_GetConversionValue(ADC1);
}
return (result);
}
/*
*********************************************************************************************************
*********************************************************************************************************
* PB FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_PB_Init()
*
* Description : Initialize the board's PB.
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : BSP_Init().
*
* Note(s) : none.
*********************************************************************************************************
*/
//key
static void BSP_PB_Init (void)
{
GPIO_InitTypeDef gpio_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_StructInit(&gpio_init);
gpio_init.GPIO_Pin = BSP_GPIOA_PB_KEY1;
gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &gpio_init);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_StructInit(&gpio_init);
gpio_init.GPIO_Pin = BSP_GPIOB_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(GPIOA, BSP_GPIOA_PB_KEY1);
if (pin == 0) {
status = 1;
}
break;
case BSP_PB_ID_KEY2:
pin = GPIO_ReadInputDataBit(GPIOB, BSP_GPIOB_PB_KEY2);
if (pin == 0) {
status = 2;
}
break;
default:
break;
}
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_GPIOB, ENABLE);
gpio_init.GPIO_Pin = BSP_GPIOC_LED1 | BSP_GPIOC_LED2 ;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &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(GPIOB, BSP_GPIOC_LED1 | BSP_GPIOC_LED2 );
break;
case 1:
GPIO_SetBits(GPIOB, BSP_GPIOC_LED1);
break;
case 2:
GPIO_SetBits(GPIOB, BSP_GPIOC_LED2);
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(GPIOB, BSP_GPIOC_LED1 | BSP_GPIOC_LED2 );
break;
case 1:
GPIO_ResetBits(GPIOB, BSP_GPIOC_LED1);
break;
case 2:
GPIO_ResetBits(GPIOB, BSP_GPIOC_LED2);
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(GPIOB);
switch (led) {
case 0:
BSP_LED_Toggle(1);
BSP_LED_Toggle(2);
break;
case 1:
if ((pins & BSP_GPIOC_LED1) == 0) {
GPIO_SetBits( GPIOB, BSP_GPIOC_LED1);
} else {
GPIO_ResetBits(GPIOB, BSP_GPIOC_LED1);
}
break;
case 2:
if ((pins & BSP_GPIOC_LED2) == 0) {
GPIO_SetBits( GPIOB, BSP_GPIOC_LED2);
} else {
GPIO_ResetBits(GPIOB, BSP_GPIOC_LED2);
}
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?