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

📄 bsp.c

📁 ST32F10xxx+uCOSII2.85的官方源代码,带LCD驱动,支持Keil3和IAR环境.这个可以做为参考,实际使用需要修改,他做的太复杂了,目录也很深
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                     MICIRUM BOARD SUPPORT PACKAGE
*
*                             (c) Copyright 2007; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*               Knowledge of the source code may NOT be used to develop a similar product.
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                        BOARD SUPPORT PACKAGE
*
*                                     ST Microelectronics STM32
*                                              with the
*                                   STM3210B-EVAL Evaluation Board
*
* Filename      : bsp.c
* Version       : V1.00
* Programmer(s) : Brian Nagel
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/

#define  BSP_GLOBALS
#include <includes.h>


/*
*********************************************************************************************************
*                                            LOCAL DEFINES
*********************************************************************************************************
*/
                                                                /* ---------------------- GPIOA Pins ---------------------- */
#define  GPIOA_UART1_TX                 DEF_BIT_09
#define  GPIOA_UART1_RX                 DEF_BIT_10
#define  GPIOA_LCD_BL                   DEF_BIT_14

                                                                /* ---------------------- GPIOB Pins ---------------------- */
#define  GPIOB_LCD_CS                   DEF_BIT_02
#define  GPIOB_TEMP_INT                 DEF_BIT_05
#define  GPIOB_TEMP_SCL                 DEF_BIT_06
#define  GPIOB_TEMP_SDA                 DEF_BIT_07
#define  GPIOB_AUDIO_PWM                DEF_BIT_08
#define  GPIOB_PB_KEY                   DEF_BIT_09
#define  GPIOB_LCD_SCL                  DEF_BIT_13
#define  GPIOB_LCD_SDO                  DEF_BIT_14
#define  GPIOB_LCD_SDI                  DEF_BIT_15

                                                                /* ---------------------- GPIOC Pins ---------------------- */
#define  GPIOC_POT                      DEF_BIT_04
#define  GPIOC_LED1                     DEF_BIT_06
#define  GPIOC_LED2                     DEF_BIT_07
#define  GPIOC_LED3                     DEF_BIT_08
#define  GPIOC_LED4                     DEF_BIT_09

                                                                /* ---------------------- GPIOD Pins ---------------------- */
#define  GPIOD_CAN_RX                   DEF_BIT_00
#define  GPIOD_CAN_TX                   DEF_BIT_01
#define  GPIOD_UART2_CTS                DEF_BIT_03
#define  GPIOD_UART2_RTS                DEF_BIT_04
#define  GPIOD_UART2_TX                 DEF_BIT_05
#define  GPIOD_UART2_RX                 DEF_BIT_06
#define  GPIOD_LCD_RS                   DEF_BIT_07
#define  GPIOD_JOY_UP                   DEF_BIT_08
#define  GPIOD_JOY_SEL                  DEF_BIT_12
#define  GPIOD_JOY_DOWN                 DEF_BIT_14
#define  GPIOD_LCD_RD                   DEF_BIT_15

                                                                /* ---------------------- GPIOE Pins ---------------------- */
#define  GPIOE_JOY_LEFT                 DEF_BIT_00
#define  GPIOE_JOY_RIGHT                DEF_BIT_01

/*
*********************************************************************************************************
*                                           LOCAL CONSTANTS
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                          LOCAL DATA TYPES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                            LOCAL TABLES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                       LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                      LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/

static  void  Tmr_TickInit  (void);
static  void  LED_Init      (void);
static  void  PB_Init       (void);
static  void  Joystick_Init (void);

/*
*********************************************************************************************************
*                                     LOCAL CONFIGURATION ERRORS
*********************************************************************************************************
*/


/*
******************************************************************************************************************************
******************************************************************************************************************************
**                                         Global Functions
******************************************************************************************************************************
******************************************************************************************************************************
*/

/*
*********************************************************************************************************
*                                         BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
*               functions found in this module.
*
* Arguments   : none
*********************************************************************************************************
*/

void  BSP_Init (void)
{
    RCC_DeInit();
    RCC_HSEConfig(RCC_HSE_ON);
    RCC_WaitForHSEStartUp();


    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);
    FLASH_SetLatency(FLASH_Latency_2);
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    RCC_PLLCmd(ENABLE);

    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
        ;
    }

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    while (RCC_GetSYSCLKSource() != 0x08) {
        ;
    }

    LED_Init();                                                 /* Initialize the I/Os for the LED      controls            */
    PB_Init();                                                  /* Initialize the I/Os for the PB       control             */
    Joystick_Init();                                            /* Initialize the I/Os for the Joystick control             */

    LCD_Init();
    LCD_Clear();


    Tmr_TickInit();                                             /* Initialize the uC/OS-II tick interrupt                   */
}


/*
*********************************************************************************************************
*                                     DISABLE ALL INTERRUPTS
*
* Description : This function disables all interrupts from the interrupt controller.
*
* Arguments   : None.
*
* Returns     : None.
*********************************************************************************************************
*/

void  BSP_IntDisAll (void)
{
    CPU_IntDis();
}


/*
*********************************************************************************************************
*                                      GET THE CPU CLOCK FREQUENCY
*
* Description: This function reads CPU registers to determine the CPU clock frequency of the chip in KHz.
*
* Argument(s): None.
*
* Returns    : The CPU clock frequency, in Hz.
*********************************************************************************************************
*/

CPU_INT32U  BSP_CPU_ClkFreq (void)
{
    static  RCC_ClocksTypeDef  rcc_clocks;


    RCC_GetClocksFreq(&rcc_clocks);

    return ((CPU_INT32U)rcc_clocks.HCLK_Frequency);
}


/*
******************************************************************************************************************************
******************************************************************************************************************************
**                                       PB and LED Functions
******************************************************************************************************************************
******************************************************************************************************************************
*/

/*
*********************************************************************************************************
*                                         PB INITIALIZATION
*
* Description : This function initializes the board's PB
*
* Arguments   : none
*
* Returns     ; none
*********************************************************************************************************
*/

static  void  PB_Init (void)
{
    GPIO_InitTypeDef  gpio_init;


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    gpio_init.GPIO_Pin  = GPIOB_PB_KEY;
    gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &gpio_init);
}


/*
*********************************************************************************************************
*                                         GET 'PUSH BUTTON' STATUS
*
* Description : This function is used to get the status of any push button on the board.
*
* Arguments   : push_button    is the number of the push button to probe
*                              1    probe the user push button
*
* Returns     : DEF_TRUE  if the push button is pressed
*               DEF_FALSE if the push button is not pressed
*********************************************************************************************************
*/

CPU_BOOLEAN  PB_GetStatus (CPU_INT08U pb)
{
    CPU_BOOLEAN  status;
    CPU_INT32U   pin;


    status = DEF_FALSE;

    switch (pb) {
        case 1:
             pin = GPIO_ReadInputDataBit(GPIOB, GPIOB_PB_KEY);
             if (pin == 0) {
                 status = DEF_TRUE;
             }
             break;

        default:
             break;
    }

    return (status);
}

/*
*********************************************************************************************************
*                                         JOYSTICK INITIALIZATION
*
* Description : This function initializes the board's joystick.
*
* Arguments   : none
*
* Returns     : none
*********************************************************************************************************
*/

static  void  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  = GPIOD_JOY_UP | GPIOD_JOY_SEL | GPIOD_JOY_DOWN;
    gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOD, &gpio_init);

                                                                /* Configure JOY_LEFT & JOY_RIGHT                           */
    gpio_init.GPIO_Pin  = GPIOE_JOY_LEFT | GPIOE_JOY_RIGHT;
    gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOE, &gpio_init);
}

/*
*********************************************************************************************************
*                                         GET JOYSTICK STATUS
*
* Description : This function is used to get the status of the joystick on the board.
*
* Arguments   : none
*
* Returns     : JOYSTICK_CENTER     if the joystick is being pressed.
*               JOYSTICK_LEFT       if the joystick is toggled left.
*               JOYSTICK_RIGHT      if the joystick is toggled right.
*               JOYSTICK_UP         if the joystick is toggled up.
*               JOYSTICK_DOWN       if the joystick is toggled down.
*
*********************************************************************************************************
*/

CPU_INT32U  Joystick_GetStatus (void)
{
    CPU_BOOLEAN  pin;
    CPU_BOOLEAN  status;

    status = 0;

    pin    = GPIO_ReadInputDataBit(GPIOE, GPIOE_JOY_RIGHT);
    if (pin == 0) {
        status |=  JOYSTICK_LEFT;
    }

    pin    = GPIO_ReadInputDataBit(GPIOE, GPIOE_JOY_LEFT);
    if (pin == 0) {
        status |=  JOYSTICK_RIGHT;
    }

    pin    = GPIO_ReadInputDataBit(GPIOD, GPIOD_JOY_UP);
    if (pin == 0) {
        status |=  JOYSTICK_UP;
    }

    pin    = GPIO_ReadInputDataBit(GPIOD, GPIOD_JOY_DOWN);
    if (pin == 0) {
        status |=  JOYSTICK_DOWN;
    }

    pin    = GPIO_ReadInputDataBit(GPIOD, GPIOD_JOY_SEL);
    if (pin == 0) {
        status |=  JOYSTICK_CENTER;
    }

⌨️ 快捷键说明

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