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

STM32的串口中断应该怎样配置

小小秋风1 2018-08-18 浏览量:971
如题
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 看你是使用什么方式了,库也寄存器方式,库还分HAL与标准库呢

    大体流程就是配置使能中断,设置中断函数

    设置中断优先级

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

其他答案 数量:15


  •    //USART 初始化设置

    USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;/字节为8位数据格式
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
    USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶检验位
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式

        USART_Init(USART1 &USART_InitStructure); //初始化串口
    #if EN_USART1_RX   //如果使能了接收

        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
    NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
      
        USART_ITConfig(USART1 USART_IT_RXNE ENABLE);//开启中断
    #endif
        USART_Cmd(USART1 ENABLE);                    //使能中断

    }
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接使用例程的初始化函数,如果自己编写需要看寄存器手册
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断肯定是要配置优先级,然后再终端服务函数里去判断到底是哪一个串口再执行你的中断程序
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接使用CubeMX软件,生成工程和代码。关键字:CubeMX 串口中断

    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • https://blog.csdn.net/richardgann/article/details/78894630

    直接看这个把  配置的不错

    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口设置的一般有如下几个步骤: 

    1) 串口时钟使能, GPIO 时钟使能
    2) 串口复位
    3) GPIO 端口模式设置
    4) 串口参数初始化
    5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)
    6) 使能串口
    7) 编写中断处理函数

    具体参考,https://www.cnblogs.com/zengsf/p/7158919.html​,讲解的通俗易懂

    • 发布于2018-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 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-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以参考原子的串口通信章节的例程,里面有详细的介绍和代码
    • 发布于2018-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32串口中断有几种,有发送中断、接收中断、空闲中断等,都可以直接通过中断寄存器配置,比如使用串口接收不定长字符,就是启用空闲中断+DMA。

    • 发布于2018-08-26
    • 举报
    • 评论 0
    • 0
    • 0

  • USART_ITConfig(USART1,USART_IT_XXXX,ENABLE);命令可以配置串口中断

    USART_IT_XXXX是中断的类型,包括接收中断,发送中断等几种

    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个配置的方式有很多种,并不是几句话能描述清楚的,建议你看一下官方的串口通信文档
    • 发布于2018-09-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口通信的配置你可以看野火或者正点原子的教程,他们都有例程
    • 发布于2018-09-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的串口中断应该怎样配置