打印
[STM32F1]

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

[复制链接]
3037|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2022-5-6 22:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用串口的时候,一定会涉及中断嘛?在正点原子一个例程中: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++;
        }         
}

使用特权

评论回复
沙发
wuhany|  楼主 | 2022-5-6 22:45 | 只看该作者

使用特权

评论回复
板凳
wuhany|  楼主 | 2022-5-6 22:49 | 只看该作者
这是在USART.c文件中的串口中断函数,不是很明白在串口初始化的时候用到了这个中断服务函数没有,在什么情况下会进行这个中断,感觉对串口不是很理解,希望大佬帮助解答一下!

使用特权

评论回复
地板
dengdc| | 2022-5-6 22:51 | 只看该作者
串口接收可以不用中断,你可以放到while大循环里接收,但是这种串口接收方式效率比较低。

使用特权

评论回复
5
zhanghqi| | 2022-5-6 22:54 | 只看该作者
串口中断函数不用初始化,你可以在中断向量表里找到。

使用特权

评论回复
6
jiajs| | 2022-5-6 22:57 | 只看该作者
果你开启了串口接收中断,串口接收到数据后会进入中断

使用特权

评论回复
7
zwll| | 2022-5-6 23:01 | 只看该作者
慢慢啃吧新人,后面还有串口DMA接收之类的,效率更高。

使用特权

评论回复
8
zhaoxqi| | 2022-5-6 23:02 | 只看该作者
uart_init里应该初始化串口中断了,可以看下函数实现。

使用特权

评论回复
9
jiajs| | 2022-5-6 23:04 | 只看该作者
正常情况下,串口接收是需要中断的。2楼说的方式可以说只是理论上可行,项目中基本不会使用。

使用特权

评论回复
10
wyjie| | 2022-5-6 23:06 | 只看该作者
简单经典的接收是只采用rxne中断,然后把本次中断接收到的一个字节写入缓存。

使用特权

评论回复
11
zwll| | 2022-5-6 23:08 | 只看该作者
高效点的方式会配合dma中断使用。

使用特权

评论回复
12
llljh| | 2022-5-6 23:10 | 只看该作者
串口发送可以不使用中断,采用直写的方式,项目中可以使用这种方式。

使用特权

评论回复
13
jiahy| | 2022-5-6 23:12 | 只看该作者
要是不接收数据可以不要中断

使用特权

评论回复
14
zhenykun| | 2022-5-6 23:14 | 只看该作者
不用的话 可以直接DMA 这样 速度很快。

使用特权

评论回复
15
spark周| | 2022-5-6 23:17 | 只看该作者
多动手做几个例程,多看看接触多了,自己就都明白了

使用特权

评论回复
16
肥羊| | 2022-5-7 15:52 | 只看该作者
不一定

使用特权

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

本版积分规则

879

主题

10435

帖子

4

粉丝