STM32_HAL库串口通信(中断函数Usart)操作指令(基于CubeMX软件)

发布于 2024-02-23  35 次阅读


中断UART数据发送程序

HAL_UART_Transmit_IT(&huart2,receiveData,size);
//与轮询UART操作区别:无需超时时间

中断UART数据接收程序

HAL_UART_Receive_IT(&huart2,receiveData,size);
//开启串口轮询函数(只执行一次串口)
//避免写在主循环内 因在主循环之前只执行一次

中断数据处理程序

//中断数据处理函数(回调处理函数)
__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
  UNUSED(huart);
}
//此处为弱定义(需要新建文件定义函数),将中断处理函数写入

//案例(main.c在USER CODE内)
uint8_t receiveData[]
  //为全局变量 放入USER CODE PV注释中(私有变量)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
     HAL_UART_Transmit_IT(&huart2,receiveData,size);
     GPIO_PinState state=GPIO_PIN_SET;
     if ( receiveData[1]=='0'){
       state=GPIO_PIN_RESET;}
     if (receiveData[0]=='R'){
       HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,state);}
     else if(receiveData[0]=='G'){
       HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,state);} 
     else if(receiveData[0]=='B'){
       HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,state);}
     HAL_UART_Rrceive_IT(&huart2,receiveData,2);
}
届ける言葉を今は育ててる
最后更新于 2024-02-23