以前使用标准外设库的串口编程时,比如要初始化一个串口,使用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套串口操作库函数? u3 R( `" L& D* {! r k 后来查了资料,补习了一番才略微明白了一些,给大家分享一下:* a* ^- ]$ o: O H. f 1、UART:universal asynchronous receiver and transmitter通用异步收发器0 t7 |/ ?( r1 i. s# \8 E% O, e 2、USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器! r" l9 v, c/ I3 v' V 也就是说:UART的一般只能用于异步串行通讯,而名称为USART的既可以用于同步串行通讯,也能用于异步串行通讯。/ h& `$ M, s4 z" W9 ? 在STM32CubeMX中测试了一下同步通信和异步通信,自动生成的代码中,果然: 1、在使用异步通信时,自动调用的是HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) 初始化1 K# l6 u5 E; J( ?& d2 n/ t1 v 2、在使用同步通信时,自动调用了HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)初始化& w% c( |4 }3 ]; f" i 暂时就有这点,大家有什么心得也来说说? |
微信公众号
手机版
CUBE库把两个部分分开,进行了升级把
朋友是高手啊,直接USB了,我还不敢去看那个啊,回头有问题可要向你求教了
可以 共同学习进步
共同学习哈
其实不难,百度一下