以前使用标准外设库的串口编程时,比如要初始化一个串口,使用USART_Init函数就可以了,如图: 今天学习了Cube库,在查看帮助文档时,发现有两个串口初始化函数,HAL_UART_Init和HAL_USART_Init。它们的函数形式:& `# t7 D [' A HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) 分别属于如下帮助文档类别,如图: D4 c+ G' G1 W1 D% m 再看看两者地区别,一个是关于UART,一个是USART。# J6 I/ l9 V3 Q, I. q. U# J 以前对这两者没有区分,一下子懵了,怎么有2套串口操作库函数?% }, D7 }; Q5 | ?% O' Z. Q 后来查了资料,补习了一番才略微明白了一些,给大家分享一下:1 ?# a+ s8 W8 r- {5 Y% n 1、UART:universal asynchronous receiver and transmitter通用异步收发器, |8 ?1 T1 X( C) f" |. F 2、USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器7 f$ W' C1 [) m* A 也就是说:UART的一般只能用于异步串行通讯,而名称为USART的既可以用于同步串行通讯,也能用于异步串行通讯。 在STM32CubeMX中测试了一下同步通信和异步通信,自动生成的代码中,果然: 1、在使用异步通信时,自动调用的是HAL_StatusTypeDef HAL_UART_Init( UART_HandleTypeDef * huart ) 初始化 2、在使用同步通信时,自动调用了HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)初始化9 ?' ] c" r) ]6 ~9 Q 暂时就有这点,大家有什么心得也来说说? |
CUBE库把两个部分分开,进行了升级把
朋友是高手啊,直接USB了,我还不敢去看那个啊,回头有问题可要向你求教了
可以 共同学习进步
共同学习哈
其实不难,百度一下