board_config.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /*
  2. * Copyright (C) 2020, Huada Semiconductor Co., Ltd.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-10-30 CDT first version
  9. */
  10. #include <rtdevice.h>
  11. #include "board_config.h"
  12. /**
  13. * The below functions will initialize HC32 board.
  14. */
  15. #if defined RT_USING_SERIAL
  16. rt_err_t rt_hw_board_uart_init(M4_USART_TypeDef *USARTx)
  17. {
  18. rt_err_t result = RT_EOK;
  19. switch ((rt_uint32_t)USARTx)
  20. {
  21. #if defined(BSP_USING_UART1)
  22. case (rt_uint32_t)M4_USART1:
  23. /* Configure USART RX/TX pin. */
  24. GPIO_SetFunc(USART1_RX_PORT, USART1_RX_PIN, GPIO_FUNC_33_USART1_RX, PIN_SUBFUNC_DISABLE);
  25. GPIO_SetFunc(USART1_TX_PORT, USART1_TX_PIN, GPIO_FUNC_32_USART1_TX, PIN_SUBFUNC_DISABLE);
  26. break;
  27. #endif
  28. default:
  29. result = -RT_ERROR;
  30. break;
  31. }
  32. return result;
  33. }
  34. #endif
  35. #if defined(RT_USING_PWM)
  36. rt_err_t rt_hw_board_pwm_init(M4_TMRA_TypeDef *TMRAx)
  37. {
  38. rt_err_t result = RT_EOK;
  39. switch ((rt_uint32_t)TMRAx)
  40. {
  41. #if defined(BSP_USING_PWM1)
  42. case (rt_uint32_t)M4_TMRA_1:
  43. #if defined(BSP_USING_PWM1_CH1)
  44. GPIO_SetFunc(PWM1_CH1_PORT, PWM1_CH1_PIN, PWM1_CH1_FUNC, PIN_SUBFUNC_DISABLE);
  45. #endif
  46. #if defined(BSP_USING_PWM1_CH2)
  47. GPIO_SetFunc(PWM1_CH2_PORT, PWM1_CH2_PIN, PWM1_CH2_FUNC, PIN_SUBFUNC_DISABLE);
  48. #endif
  49. break;
  50. #endif
  51. default:
  52. result = -RT_ERROR;
  53. break;
  54. }
  55. return result;
  56. }
  57. #endif
  58. #if defined (RT_USING_SPI)
  59. void hc32_board_spi_init(M4_SPI_TypeDef *M4_SPIx, rt_uint8_t mode)
  60. {
  61. #if defined (BSP_USING_SPI1)
  62. stc_gpio_init_t stcGpioCfg;
  63. GPIO_StructInit(&stcGpioCfg);
  64. /* Port configurate, High driving capacity for output pin.
  65. CMOS input for input pin */
  66. if(mode & RT_SPI_3WIRE)
  67. {
  68. /* code */
  69. }
  70. else
  71. {
  72. if(mode & RT_SPI_SLAVE)
  73. {
  74. stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
  75. }
  76. else
  77. {
  78. stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
  79. }
  80. GPIO_Init(SPI1_NSS_PORT, SPI1_NSS_PIN, &stcGpioCfg);
  81. GPIO_SetFunc(SPI1_NSS_PORT, SPI1_NSS_PIN, SPI1_NSS_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
  82. }
  83. if(mode & RT_SPI_SLAVE)
  84. {
  85. stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
  86. GPIO_Init(SPI1_SCK_PORT, SPI1_SCK_PIN, &stcGpioCfg);
  87. GPIO_Init(SPI1_MOSI_PORT, SPI1_MOSI_PIN, &stcGpioCfg);
  88. stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
  89. GPIO_Init(SPI1_MISO_PORT, SPI1_MISO_PIN, &stcGpioCfg);
  90. }
  91. else
  92. {
  93. stcGpioCfg.u16PinDrv = PIN_DRV_HIGH;
  94. GPIO_Init(SPI1_SCK_PORT, SPI1_SCK_PIN, &stcGpioCfg);
  95. GPIO_Init(SPI1_MOSI_PORT, SPI1_MOSI_PIN, &stcGpioCfg);
  96. stcGpioCfg.u16PinIType = PIN_ITYPE_CMOS;
  97. GPIO_Init(SPI1_MISO_PORT, SPI1_MISO_PIN, &stcGpioCfg);
  98. }
  99. GPIO_SetFunc(SPI1_SCK_PORT, SPI1_SCK_PIN, SPI1_SCK_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
  100. GPIO_SetFunc(SPI1_MOSI_PORT, SPI1_MOSI_PIN, SPI1_MOSI_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
  101. GPIO_SetFunc(SPI1_MISO_PORT, SPI1_MISO_PIN, SPI1_MISO_GPIO_FUNC, PIN_SUBFUNC_DISABLE);
  102. #endif
  103. #if defined (BSP_USING_SPI2)
  104. /* Config SPI2 relevant port according to SPI1 */
  105. #endif
  106. #if defined (BSP_USING_SPI3)
  107. /* Config SPI3 relevant port according to SPI1 */
  108. #endif
  109. }
  110. #endif
  111. #if defined(RT_USING_PULSE_ENCODER)
  112. rt_err_t rt_hw_board_pulse_encoder_init(M4_TMRA_TypeDef *TMRAx)
  113. {
  114. rt_err_t result = RT_EOK;
  115. switch ((rt_uint32_t)TMRAx)
  116. {
  117. #if defined(BSP_USING_PULSE_ENCODER9)
  118. case (rt_uint32_t)M4_TMRA_9:
  119. GPIO_SetFunc(PULSE_ENCODER9_CLKA_PORT, PULSE_ENCODER9_CLKA_PIN, PULSE_ENCODER9_CLKA_FUNC, PIN_SUBFUNC_DISABLE);
  120. GPIO_SetFunc(PULSE_ENCODER9_CLKB_PORT, PULSE_ENCODER9_CLKB_PIN, PULSE_ENCODER9_CLKB_FUNC, PIN_SUBFUNC_DISABLE);
  121. break;
  122. #endif
  123. default:
  124. result = -RT_ERROR;
  125. break;
  126. }
  127. return result;
  128. }
  129. #endif