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

[复制链接]
 楼主| 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大循环里接收,但是这种串口接收方式效率比较低。
zhanghqi 发表于 2022-5-6 22:54 | 显示全部楼层
串口中断函数不用初始化,你可以在中断向量表里找到。
jiajs 发表于 2022-5-6 22:57 | 显示全部楼层
果你开启了串口接收中断,串口接收到数据后会进入中断
zwll 发表于 2022-5-6 23:01 | 显示全部楼层
慢慢啃吧新人,后面还有串口DMA接收之类的,效率更高。
zhaoxqi 发表于 2022-5-6 23:02 | 显示全部楼层
uart_init里应该初始化串口中断了,可以看下函数实现。
jiajs 发表于 2022-5-6 23:04 | 显示全部楼层
正常情况下,串口接收是需要中断的。2楼说的方式可以说只是理论上可行,项目中基本不会使用。
wyjie 发表于 2022-5-6 23:06 | 显示全部楼层
简单经典的接收是只采用rxne中断,然后把本次中断接收到的一个字节写入缓存。
zwll 发表于 2022-5-6 23:08 | 显示全部楼层
高效点的方式会配合dma中断使用。
llljh 发表于 2022-5-6 23:10 | 显示全部楼层
串口发送可以不使用中断,采用直写的方式,项目中可以使用这种方式。
jiahy 发表于 2022-5-6 23:12 | 显示全部楼层
要是不接收数据可以不要中断
zhenykun 发表于 2022-5-6 23:14 | 显示全部楼层
不用的话 可以直接DMA 这样 速度很快。
spark周 发表于 2022-5-6 23:17 | 显示全部楼层
多动手做几个例程,多看看接触多了,自己就都明白了
肥羊 发表于 2022-5-7 15:52 | 显示全部楼层
不一定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部