• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32怎么复位串口中断?

liubo 2018-09-10 浏览量:2957
是不是通过这一句USART_ITConfig(USART1 USART_IT_RXNE ENABLE);//开启串口接受中断呢?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1.首先配置串口1管脚
    /* 配置串口1引脚 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA &GPIO_InitStructure);
    2.下面的代码设置并使能串口1中断,这个应该放在有一个函数中,然后再main中启用该函数
    /* Enable the USART1 Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    3.写一个串口1的中断ISR
    void USART1_IRQHandler(void)
    {
    if(USART_GetITStatus(USART1USART_IT_RXNE)==SET)
    {
    USART_ClearITPendingBit(USART1USART_IT_RXNE);
    get_data=USART_ReceiveData(USART1);
    //这里可以定义一个buffer缓冲,全局的。
    }
    if(USART_GetFlagStatus(USART1USART_FLAG_ORE)==SET)
    {
    USART_ClearFlag(USART1USART_FLAG_ORE);
    USART_ReceiveData(USART1);
    }
    }
    • 发布于 2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:16

  • 清除中断标志位,调整接收数组、指针
    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口中断的复位在于对中断标记的清除

    你清除了中断标记,中断就相当于复位了

    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先配置串口1管脚,再main中启用该函数,写一个串口1的中断ISR
    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这也是配置串口中断的函数,还有串口也要配置
    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 开启中断后通过读DR寄存器可以自动清除中断标识.
    • 发布于2018-09-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 是的,是通过你的这个开启中断,但是复位并不是这一句了

    是要清除中断标志位的

    • 发布于2018-09-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 清除中断标志位之后,就对中断的状态复位了
    • 发布于2018-09-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 这一句是开启串口接收中断的,如果要复位,需要先禁用串口中断,清除中断标志位,然后再重新启用
    • 发布于2018-09-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 要清除中断标志位,对对应的中断状态复位操作
    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位串口的中断要先把你的串口中断禁用,再清除串口中断标志位,然后复位
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果你是循环接收数据的,你的这句config是开启串口中断的,不是清除标志位,作用不一样的。
    • 发布于2018-09-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的串口中断要先关闭,然后禁用你的串口就可以复位
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位串口中断首先要禁用串口中断,然后清除标记位,重新使能中断即可。
    • 发布于2018-10-17
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32怎么复位串口中断?