@2019-01-30
【小记】
> rt-thread 工程启动之后先是进入函数 rtthread_startup 做一些系统运行前的基础工作,主要有:
* 板级硬件初始化
* 系统定时器初始化
* 系统调度器初始化
* 创建初始化线程 (组件初始化)
* 定时器线程初始化
* 空闲线程初始化
* 系统调度器工作
> 串口设备的配置发生在板级硬件初始化中
串口设备配置函数中遍历要使用的串口设备,做一些工作参数配置和设备接口实现并注册设备 (但在此不初始化设备或不使能设备)
具体配置过程:
1. 注册串口设备,以便 find
rt_hw_board_init() ---> rt_hw_usart_init() ---> rt_hw_serial_register() ---> rt_device_register()
2. 开启串口时钟及外设管脚,配置串口工作参数
> 作为输出终端
rt_components_board_init() ---> rt_console_set_device() ---> rt_device_open() ---> device_init() ---> serial->ops->configure() ---> stm32_configure() ---> HAL_UART_Init() ---> HAL_UART_MspInit() , UART_setConfig()
> 作为驱动 ESP8266
rt_components_init() ---> at_socket_device_init() ---> at_client_init() ---> rt_device_open() ---> device_init() ---> serial->ops->configure() ---> stm32_configure() ---> HAL_UART_Init() ---> HAL_UART_MspInit() , UART_setConfig()