中断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);
}
Comments NOTHING