打印
[STM32F1]

串口通信一定要用到中断嘛?求助!!!

[复制链接]
3041|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 leizhanzhi 于 2020-4-19 11:03 编辑

使用串口的时候,一定会涉及中断嘛?在正点原子一个例程中:int main(void)
{               
        u8 t=0;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        delay_init();                     //延时函数初始化          
        uart_init(115200);         //串口初始化为115200
  while(1)
        {
                printf("t:%d\r\n",t);
                delay_ms(500);
                t++;
        }         
}



这是在USART.c文件中的串口中断函数,不是很明白在串口初始化的时候用到了这个中断服务函数没有,在什么情况下会进行这个中断,感觉对串口不是很理解,希望大佬帮助解答一下!

使用特权

评论回复
沙发
cry1109| | 2020-4-19 20:38 | 只看该作者
串口接收可以不用中断,你可以放到while大循环里接收,但是这种串口接收方式效率比较低。串口中断函数不用初始化,你可以在中断向量表里找到。如果你开启了串口接收中断,串口接收到数据后会进入中断。慢慢啃吧新人,后面还有串口DMA接收之类的,效率更高。

使用特权

评论回复
板凳
xenkuo| | 2020-4-19 21:46 | 只看该作者
uart_init里应该初始化串口中断了,可以看下函数实现。
正常情况下,串口接收是需要中断的。2楼说的方式可以说只是理论上可行,项目中基本不会使用。简单经典的接收是只采用rxne中断,然后把本次中断接收到的一个字节写入缓存。高效点的方式会配合dma中断使用。
串口发送可以不使用中断,采用直写的方式,项目中可以使用这种方式。

使用特权

评论回复
地板
wziyi| | 2020-4-25 17:02 | 只看该作者
要是不接收数据可以不要中断

使用特权

评论回复
5
東南博士| | 2020-4-26 15:53 | 只看该作者
不用的话 可以直接DMA 这样 速度很快。

使用特权

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

本版积分规则

11

主题

18

帖子

0

粉丝