以前使用标准外设库的串口编程时,比如要初始化一个串口,使用USART_Init函数就可以了,如图:( M. v0 u- V- V& W, f 今天学习了Cube库,在查看帮助文档时,发现有两个串口初始化函数,HAL_UART_Init和HAL_USART_Init。它们的函数形式:; d7 p1 Y1 B' E1 z! z, q# [ HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) - [% q" G2 b; H' N- i1 K HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)5 G6 w: a- ~8 `9 O: Z$ [) y 分别属于如下帮助文档类别,如图:& k* M; T' h5 r; @2 |- R3 M, h5 o3 @5 y 再看看两者地区别,一个是关于UART,一个是USART。 以前对这两者没有区分,一下子懵了,怎么有2套串口操作库函数? 后来查了资料,补习了一番才略微明白了一些,给大家分享一下: 1、UART:universal asynchronous receiver and transmitter通用异步收发器 2、USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器5 s! D2 K3 E# W- H) R! V1 e% X 也就是说:UART的一般只能用于异步串行通讯,而名称为USART的既可以用于同步串行通讯,也能用于异步串行通讯。 在STM32CubeMX中测试了一下同步通信和异步通信,自动生成的代码中,果然: 1、在使用异步通信时,自动调用的是HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) 初始化/ b7 [7 o7 ?7 @ 2、在使用同步通信时,自动调用了HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)初始化: }6 \$ v* Q8 ~4 h; d) S7 B 暂时就有这点,大家有什么心得也来说说?# F) D, f+ h1 Z/ W( E/ { |
CUBE库把两个部分分开,进行了升级把
朋友是高手啊,直接USB了,我还不敢去看那个啊,回头有问题可要向你求教了
可以 共同学习进步
共同学习哈
其实不难,百度一下