新手入门
- 积分
- 9
- 金钱
- 9
- 注册时间
- 2023-9-6
- 在线时间
- 2 小时
|
我希望通过串口向单片机发送U1,单片机返回一个字符串“measure”; 我的回调函数里最后是重新开启了接收中断,希望可以连续接收,但是每次只能第一次计入中断,后面串口助手再发送U1,串口助手接收不到返回的数据,只能接收到第一次的
uint8_t cmd[2];
uint8_t cmd[2] = "0" ;
uint8_t usart1_tx_buf[]= "measure\r\n" ;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1){
if(cmd[0] == 'U'&&cmd[1] == '1')
{
HAL_UART_Transmit(&huart1,usart1_tx_buf, sizeof(usart1_tx_buf),1000);
HAL_UART_Transmit_DMA(&huart1, usart1_tx_buf, sizeof(usart1_tx_buf));
while (1)
{
/* 等待 DMA1_Channel4 传输完成 */
if ( __HAL_DMA_GET_FLAG(&huart1, DMA_FLAG_TC4)) /* 等待 DMA1_Channel4 传输完成 */
{
__HAL_DMA_CLEAR_FLAG(&huart1, DMA_FLAG_TC4); /* 清除 DMA1_Channel4 传输完成标志 */
HAL_UART_DMAStop(&huart1); /* 传输完成以后关闭串口DMA */
break;
}
}
HAL_UART_Receive_IT(&huart1, cmd, 2);
}
}
}
|
|