board_config.c 3.8 KB
Newer Older
C
chengy4 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
/*
 * Copyright (C) 2020, Huada Semiconductor Co., Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2020-10-30     CDT          first version
 */
#include <rtdevice.h>
#include "board_config.h"

/**
 * The below functions will initialize HC32 board.
 */

#if defined RT_USING_SERIAL
rt_err_t rt_hw_board_uart_init(M4_USART_TypeDef *USARTx)
{
    rt_err_t result = RT_EOK;

    switch ((rt_uint32_t)USARTx)
    {
#if defined(BSP_USING_UART1)
    case (rt_uint32_t)M4_USART1:
        /* Configure USART RX/TX pin. */
        GPIO_SetFunc(USART1_RX_PORT, USART1_RX_PIN, GPIO_FUNC_33_USART1_RX, PIN_SUBFUNC_DISABLE);
        GPIO_SetFunc(USART1_TX_PORT, USART1_TX_PIN, GPIO_FUNC_32_USART1_TX, PIN_SUBFUNC_DISABLE);
        break;
#endif
    default:
        result = -RT_ERROR;
        break;
    }

    return result;
}
#endif

#if defined(RT_USING_PWM)
rt_err_t rt_hw_board_pwm_init(M4_TMRA_TypeDef *TMRAx)
{
    rt_err_t result = RT_EOK;

    switch ((rt_uint32_t)TMRAx)
    {
#if defined(BSP_USING_PWM1)
    case (rt_uint32_t)M4_TMRA_1:
#if defined(BSP_USING_PWM1_CH1)
        GPIO_SetFunc(PWM1_CH1_PORT, PWM1_CH1_PIN, PWM1_CH1_FUNC, PIN_SUBFUNC_DISABLE);
#endif
#if defined(BSP_USING_PWM1_CH2)
        GPIO_SetFunc(PWM1_CH2_PORT, PWM1_CH2_PIN, PWM1_CH2_FUNC, PIN_SUBFUNC_DISABLE);
#endif
        break;
#endif
    default:
        result = -RT_ERROR;
        break;
    }

    return result;
}
#endif

#if defined (RT_USING_SPI)
void hc32_board_spi_init(M4_SPI_TypeDef *M4_SPIx, rt_uint8_t mode)
{
#if defined (BSP_USING_SPI1)
    stc_gpio_init_t stcGpioCfg;

    GPIO_StructInit(&stcGpioCfg);

    /* Port configurate, High driving capacity for output pin.
       CMOS input for input pin */
    if(mode & RT_SPI_3WIRE)
    {
        /* code */
    }
    else
    {
        if(mode & RT_SPI_SLAVE)
        {
            stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
        }
        else
        {
            stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
        }
        GPIO_Init(SPI1_NSS_PORT,  SPI1_NSS_PIN, &stcGpioCfg);
        GPIO_SetFunc(SPI1_NSS_PORT,  SPI1_NSS_PIN,  SPI1_NSS_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
    }
    if(mode & RT_SPI_SLAVE)
    {
        stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
        GPIO_Init(SPI1_SCK_PORT,  SPI1_SCK_PIN, &stcGpioCfg);
        GPIO_Init(SPI1_MOSI_PORT, SPI1_MOSI_PIN, &stcGpioCfg);
        stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
        GPIO_Init(SPI1_MISO_PORT, SPI1_MISO_PIN, &stcGpioCfg);
    }
    else
    {
        stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
        GPIO_Init(SPI1_SCK_PORT,  SPI1_SCK_PIN, &stcGpioCfg);
        GPIO_Init(SPI1_MOSI_PORT, SPI1_MOSI_PIN, &stcGpioCfg);
        stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
        GPIO_Init(SPI1_MISO_PORT, SPI1_MISO_PIN, &stcGpioCfg);
    }

    GPIO_SetFunc(SPI1_SCK_PORT,  SPI1_SCK_PIN,  SPI1_SCK_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
    GPIO_SetFunc(SPI1_MOSI_PORT, SPI1_MOSI_PIN, SPI1_MOSI_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
    GPIO_SetFunc(SPI1_MISO_PORT, SPI1_MISO_PIN, SPI1_MISO_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
#endif

#if defined (BSP_USING_SPI2)
    /* Config SPI2 relevant port according to SPI1 */
#endif

#if defined (BSP_USING_SPI3)
    /* Config SPI3 relevant port according to SPI1 */
#endif

}
#endif

#if defined(RT_USING_PULSE_ENCODER)
rt_err_t rt_hw_board_pulse_encoder_init(M4_TMRA_TypeDef *TMRAx)
{
    rt_err_t result = RT_EOK;

    switch ((rt_uint32_t)TMRAx)
    {
#if defined(BSP_USING_PULSE_ENCODER9)
    case (rt_uint32_t)M4_TMRA_9:
        GPIO_SetFunc(PULSE_ENCODER9_CLKA_PORT, PULSE_ENCODER9_CLKA_PIN, PULSE_ENCODER9_CLKA_FUNC, PIN_SUBFUNC_DISABLE);
        GPIO_SetFunc(PULSE_ENCODER9_CLKB_PORT, PULSE_ENCODER9_CLKB_PIN, PULSE_ENCODER9_CLKB_FUNC, PIN_SUBFUNC_DISABLE);
        break;
#endif
    default:
        result = -RT_ERROR;
        break;
    }

    return result;
}
#endif