Kaynağa Gözat

[bsp][hc32]更正pin和usart初始化顺序(bug fix)

#8480
#8458
yangpengya 1 yıl önce
ebeveyn
işleme
2a68f70094

+ 33 - 3
bsp/hc32/libraries/hc32_drivers/drv_common.c

@@ -13,6 +13,28 @@
 #define DBG_TAG    "drv_common"
 #define DBG_LVL    DBG_INFO
 #include <rtdbg.h>
+
+#ifdef RT_USING_PIN
+#include <drv_gpio.h>
+#endif
+
+#ifdef RT_USING_SERIAL
+#ifdef RT_USING_SERIAL_V2
+#include <drv_usart_v2.h>
+#else
+#include <drv_usart.h>
+#endif /* RT_USING_SERIAL */
+#endif /* RT_USING_SERIAL_V2 */
+
+#ifdef RT_USING_FINSH
+#include <finsh.h>
+static void reboot(uint8_t argc, char **argv)
+{
+    rt_hw_cpu_reset();
+}
+MSH_CMD_EXPORT(reboot, Reboot System);
+#endif /* RT_USING_FINSH */
+
 /**
   * This function is executed in case of error occurrence.
   */
@@ -71,14 +93,22 @@ void rt_hw_board_init()
     rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
 #endif
 
-    /* Board underlying hardware initialization */
-#ifdef RT_USING_COMPONENTS_INIT
-    rt_components_board_init();
+#ifdef RT_USING_PIN
+    rt_hw_pin_init();
+#endif
+
+#ifdef RT_USING_SERIAL
+    rt_hw_usart_init();
 #endif
 
 #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
     rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
 #endif
+
+    /* Board underlying hardware initialization */
+#ifdef RT_USING_COMPONENTS_INIT
+    rt_components_board_init();
+#endif
 }
 
 void rt_hw_us_delay(rt_uint32_t us)

+ 0 - 1
bsp/hc32/libraries/hc32_drivers/drv_gpio.c

@@ -504,7 +504,6 @@ int rt_hw_pin_init(void)
 
     return rt_device_pin_register("pin", &hc32_pin_ops, RT_NULL);
 }
-INIT_BOARD_EXPORT(rt_hw_pin_init);
 
 #endif
 

+ 2 - 0
bsp/hc32/libraries/hc32_drivers/drv_gpio.h

@@ -26,6 +26,8 @@ struct hc32_pin_irq_map
     struct hc32_irq_config  irq_config;
 };
 
+int rt_hw_pin_init(void);
+
 #endif
 
 #endif /* __DRV_GPIO_H__ */

+ 1 - 3
bsp/hc32/libraries/hc32_drivers/drv_usart.c

@@ -1490,7 +1490,7 @@ static const struct rt_uart_ops hc32_uart_ops =
     .dma_transmit = hc32_dma_transmit
 };
 
-int hc32_hw_uart_init(void)
+int rt_hw_usart_init(void)
 {
     rt_err_t result = RT_EOK;
     rt_size_t obj_num = sizeof(uart_obj) / sizeof(struct hc32_uart);
@@ -1537,8 +1537,6 @@ int hc32_hw_uart_init(void)
     return result;
 }
 
-INIT_BOARD_EXPORT(hc32_hw_uart_init);
-
 #endif
 
 #endif /* RT_USING_SERIAL */

+ 1 - 0
bsp/hc32/libraries/hc32_drivers/drv_usart.h

@@ -90,6 +90,7 @@ struct hc32_uart
 /*******************************************************************************
  * Global function prototypes (definition in C source)
  ******************************************************************************/
+int rt_hw_usart_init(void);
 
 #ifdef __cplusplus
 }

+ 1 - 3
bsp/hc32/libraries/hc32_drivers/drv_usart_v2.c

@@ -1630,7 +1630,7 @@ static const struct rt_uart_ops hc32_uart_ops =
     .transmit = hc32_transmit
 };
 
-int hc32_hw_uart_init(void)
+int rt_hw_usart_init(void)
 {
     rt_err_t result = RT_EOK;
     rt_size_t obj_num = sizeof(uart_obj) / sizeof(struct hc32_uart);
@@ -1674,8 +1674,6 @@ int hc32_hw_uart_init(void)
     return result;
 }
 
-INIT_BOARD_EXPORT(hc32_hw_uart_init);
-
 #endif
 
 #endif /* RT_USING_SERIAL_V2 */

+ 1 - 0
bsp/hc32/libraries/hc32_drivers/drv_usart_v2.h

@@ -90,6 +90,7 @@ struct hc32_uart
 /*******************************************************************************
  * Global function prototypes (definition in C source)
  ******************************************************************************/
+int rt_hw_usart_init(void);
 
 #ifdef __cplusplus
 }