wb_serial_tx_it
串口1发送 中断方式
1) 在wb_ledblink设置基础上
USART1->Mode->Asynchronous
Configuration
注意Parameter settings里面的波特率是115200
NVIC settings->USART1 globe interrupt->enabled
2)SAVE, generate Code
3) main
char mystr1[] = "This is mystr1";
char str_rn[2] = {'\r','\n'};
strcat(mystr1,str_rn);
char mystr2[]="Hello world, this is mystr2";
strcat(mystr2,str_rn);
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
sendingf=1;
HAL_UART_Transmit_IT(&huart1,&mystr1,strlen(mystr1));
while(sendingf>0){}
sendingf=1;
HAL_UART_Transmit_IT(&huart1,&mystr2,strlen(mystr2));
while(sendingf>0){}
HAL_UART_Transmit_IT(&huart1,&str_rn,2);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) //Tx Transfer completed callbacks.
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
sendingf=0;
}
4)发送分析
可以在主程序发送一串字符 比如说 HAL_UART_Transmit_IT(&huart1,&mystr, strlen(mystr);
当发送完成产生中断,调用中断函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
可以在这个函数中加入led灯熄灭(发送时点亮)
网友评论