以前使用标准外设库的串口编程时,比如要初始化一个串口,使用USART_Init函数就可以了,如图:
今天学习了Cube库,在查看帮助文档时,发现有两个串口初始化函数,HAL_UART_Init和HAL_USART_Init。它们的函数形式: HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) 分别属于如下帮助文档类别,如图:
再看看两者地区别,一个是关于UART,一个是USART。 以前对这两者没有区分,一下子懵了,怎么有2套串口操作库函数? 后来查了资料,补习了一番才略微明白了一些,给大家分享一下: 1、UART:universal asynchronous receiver and transmitter通用异步收发器 2、USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器 也就是说:UART的一般只能用于异步串行通讯,而名称为USART的既可以用于同步串行通讯,也能用于异步串行通讯。 在STM32CubeMX中测试了一下同步通信和异步通信,自动生成的代码中,果然: 1、在使用异步通信时,自动调用的是HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) 初始化 2、在使用同步通信时,自动调用了HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)初始化 暂时就有这点,大家有什么心得也来说说? |
微信公众号
手机版
CUBE库把两个部分分开,进行了升级把
共同学习哈