USART中断无法按预期工作

2019-07-14 17:41发布

有人可以解释为什么我只能收到带有USART中断的13个字符吗?我使用' n'来检测字符串的结尾。
1.png
  1. #define BUFFER_SIZE 100

  2. char receive_buffer[BUFFER_SIZE];
  3. char receive_data;
  4. int receive_index = NULL;
  5. int data_ready_index = NULL;

  6. void USART2_receive(void const * argument){
  7.          for(;;){
  8.                 if(data_ready_index == 1){
  9.                 HAL_UART_Transmit_IT(&huart2, (uint8_t *)"Received data: ", strlen("Received data: "));
  10.                 HAL_Delay(50);
  11.                 HAL_UART_Transmit_IT(&huart2, (uint8_t *)receive_buffer, strlen(receive_buffer));
  12.                 memset(receive_buffer, NULL, sizeof(receive_buffer));
  13.                 HAL_Delay(50);
  14.                 HAL_UART_Transmit_IT(&huart2, (uint8_t *)" ", strlen(" "));
  15.                 data_ready_index = NULL;
  16.                 }
  17.          }
  18.      }

  19.     void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {

  20.         if (huart->Instance == USART2){
  21.             if (receive_data != 13){
  22.                 receive_buffer[receive_index++]=receive_data;
  23.             }else{
  24.                     receive_index = NULL;
  25.                     data_ready_index = 1;                                                               
  26.                     // Received data ready to be processed
  27.             }
  28.       }
  29.     }

  30.     void USART2_IRQHandler(void){

  31.       HAL_UART_IRQHandler(&huart2);
  32.       HAL_UART_Receive_IT(&huart2, (uint8_t *) &receive_data, 1);
  33.     }
复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。