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

[复制链接]
3233|4
 楼主| leizhanzhi 发表于 2020-4-19 10:49 | 显示全部楼层 |阅读模式
本帖最后由 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++;
        }         
}

捕获1.JPG

这是在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 | 显示全部楼层
要是不接收数据可以不要中断
東南博士 发表于 2020-4-26 15:53 | 显示全部楼层
不用的话 可以直接DMA 这样 速度很快。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

18

帖子

0

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