最近在学习stm32 学到uart通信那一块配置的时候出了一点迷糊,导致在配置uart的双向进行的时候老是不成功。在这里记录下来学习uart通信的记录。
首先配置stm32利用stm32cube当然是最佳的配置方式能省掉不少配置的麻烦事,stm32在usart配置中有以下四个选项
1,Asynchronous (异步的),
2,Synchronous(同步的),
3,Single Wire (Half-Duplex)(单线(半双工)),
4,Multiprocessor Communication(多处理器通信)
在单一 一处通信使用tx与rx并存的通信的时候配置 Multiprocessor Communication 多处理器通信
点完之后需要校对usart对应io口是否是正确对应配置代码的io口如果不是需要改正
将相应中断打开 设置好波特率
然后新建项目工程即可完成初始配置
最后在代码中添加回调函数以及初始化函数
uint8_t rx[50];
char a[40]="Hello,world!";
int main(void)
{
MX_GPIO_Init();
MX_USART1_UART_Init();
HAL_UART_Receive_IT(&huart1, rx, 1);
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Transmit(&huart1,(unsigned char *)a,40,50);
}
/* USER CODE END 3 */
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
GPIOC->ODR = ((rx[0] << 8) | 0x00FF);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_UART_Receive_IT(&huart1, rx, 1);
}
这样就完成了stm32uart通信的所有设置,利用上位机可以轻松完成对uart通信的验证