本文为作者学习Cubemx配置USART串口通信的笔记
欢迎交流讨论,喜欢的话点个赞吧
CubeMX中的USART配置
- 按照下图将引脚配置为异步通信模式
- 在
Configuration 一栏中可以调整该通信的参数
- 如果需要用到外部中断,则需要在NVIC Setting一栏中勾选Enable
HAL库中串口发送的有关函数
1.阻塞式发送函数
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,
uint8_t *pData,
uint16_t Size,
uint32_t Timeout);
2.非阻塞式发送函数
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,
uint8_t *pData,
uint16_t Size)
- 特点:当发送数据完成后,会使能发送中断,调用发送完毕中断回调函数
__weak是指弱函数定义,在其他地方可以重复定义该函数,这个可以看一段英文解释 NOTE: This function should not be modified, when the callback is needed, the HAL_UART_TxHalfCpltCallback or HAL_UART_TxHalfCpltCallback can be implemented in the user file.
__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
}
__weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
{
}
3.举个例子说明串口发送函数的应用
发送数组dat_Txd 中的前5个 数据到USART1 ,在数据发送完成后,翻转PB9 引脚的输出电平
HAL_UART_Transmit_IT(&huart1, dat_Txd, 5);
void HAL_UART_TX_Cpltcallback(UART_HandleTypeDef *huart)
{
if(huart->Instance = USART1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
}
}
HAL_UARRT_Transmit(&huart1, dat_Txd, 5, 10000);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
HAL库中串口接收的有关函数
1.阻塞式接收函数
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart,
uint8_t *pData,
uint16_t Size,
uint32_t Timeout)
2.非阻塞式接收函数
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,
uint8_t *pData,
uint16_t Size)
- 特点:当接收数据完成后,会使能接收中断,调用接收完毕中断回调函数
__weak是指弱函数定义,在其他地方可以重复定义该函数,这个可以看一段英文解释 NOTE: This function should not be modified, when the callback is needed, the HAL_UART_RxHalfCpltCallback or HAL_UART_RxHalfCpltCallback can be implemented in the user file.
__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
}
__weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
{
}
3.举个例子说明串口接收函数的应用
接收USART1 中的一个字节,将其保存在dat_Rxd 变量中,在数据发送完成后,若该字节为0x5A ,则翻转PB8 引脚的输出电平
HAL_UART_Transmit_IT(&huart1, &dat_Rxd, 1);
void HAL_UART_RxCpltCallbback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
if(dat_Rxd == USART1)
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
}
}
请在转载文章过程中明确标注文章出处!尊重原创,尊重知识产权,谢谢!
|