[MM32软件]

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

[复制链接]
703|7
手机看帖
扫描二维码
随时随地手机跟帖
yxl12345678|  楼主 | 2022-3-13 11:24 | 显示全部楼层 |阅读模式
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 | 显示全部楼层
每次的错误是一样的吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

83

帖子

0

粉丝