yxl12345678 发表于 2022-3-13 11:24

MM32F0144串口中断接收数据为什么错误?

void Init_Uart(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        UART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       GPIO_StructInit(&GPIO_InitStructure);
       
        UART_DeInit(UART1);
       
        RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA , ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2ENR_UART1, ENABLE);
       
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
       GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_FLOATING;
        //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
               
        USART_InitStructure.BaudRate = 9600;       
        USART_InitStructure.WordLength = UART_WordLength_8b;
        USART_InitStructure.StopBits = UART_StopBits_1;
        USART_InitStructure.Parity = UART_Parity_No ;
        USART_InitStructure.HWFlowControl = UART_HWFlowControl_None;
        USART_InitStructure.Mode = UART_GCR_RX | UART_GCR_TX;
        UART_Init(UART1, &USART_InitStructure);
       
        UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);       
        UART_Cmd(UART1, ENABLE);               
}


uint16_t drx=0;
void UART1_IRQHandler(void)
{
if(RESET != UART_GetITStatus(UART1, UART_IT_RXIEN))
   {
        UART_ClearITPendingBit(UART1, UART_IT_RXIEN);

   drx = UART_ReceiveData(UART1);

       
   if(UART_GetITStatus(UART1, UART_IT_ERR) != RESET)
       {
         UART_ClearITPendingBit(UART1, UART_IT_ERR);
      }
    }

if(UART_GetITStatus(UART1, UART_IT_ERR) != RESET)
       {
          UART_ClearITPendingBit(UART1, UART_IT_ERR);
       }

        if(UART_GetITStatus(UART1, UART_IT_PE) != RESET)
       {
          UART_ClearITPendingBit(UART1, UART_IT_PE);
       }
                       
if(RESET != UART_GetITStatus(UART1, UART_OVER_ERR))
      {
         UART_ClearITPendingBit(UART1, UART_OVER_ERR);
      }


}

请问哪里没有设置好?


yxl12345678 发表于 2022-3-13 11:27

向串口发送一个 字节数据 ,中断接收完全没有反映。
发送两个字节数据,有反映,能进入中断函数,但是数据不对。

tpgf 发表于 2022-4-2 18:28

具体的现象是什么啊

aoyi 发表于 2022-4-2 19:27

哪里出问题了呢

nawu 发表于 2022-4-2 19:30

详细描述一下吧

zljiu 发表于 2022-4-2 19:37

两个可靠接地了吗

gwsan 发表于 2022-4-2 19:47

怎么个错误法呢

tfqi 发表于 2022-4-2 19:58

每次的错误是一样的吗
页: [1]
查看完整版本: MM32F0144串口中断接收数据为什么错误?