STM32F103关于串口空闲中断的使用错误原因

起初,我在用f103的空闲中断之前用过stm32G431和GD32F303的空闲中断,我以为F103毋庸置疑也可以使用空闲中断。

然而我这样使用直接卡死在空闲中断里面了,主函数都不跑了,在网上寻找原因也找不到,后来得到了老师的帮助与指导,在程序中一步步看,发现F103居然没有空闲中断这个用法

这里是可以获得它得标志位的 并且收到数据也能够触发空闲中断机制,但是不能清除标志位!!

官方给的库函数里清除中断 标志位 是不能清除IDLE标志位的

它是只读的!

它是灰色的

最后只能放弃在F103中使用空闲中断了

经过这次老师的协助bug调试,让我们明白了硬件是会变的,需要努力学会的是编程技巧和调试手段,还有对文档手册的熟练查阅。

菜就多练!

stm32f103c8是一款常用的ARM Cortex-M3内核的微控制器,它具有多个串口接口,其中包括串口1(USART1)。串口空闲中断是一种中断方式,当串口接收到数据后,如果在一段时间内没有再次接收到数据,就会触发空闲中断使用串口空闲中断可以实现串口通信的异步接收。具体的实现步骤如下: 1. 首先,需要对串口进行初始化设置。通过设置相关的寄存器配置串口的波特率、数据位、停止位和校验位等参数。 2. 在使用串口空闲中断之前,需要开启串口空闲中断的使能位(IDLEIE)。可以通过设置相应的标志位来使能空闲中断。 3. 当串口接收到数据后,会通过硬件触发空闲中断。在空闲中断中断处理函数中,可以进行数据的接收和处理。 4. 在中断处理函数中,可以通过读取数据寄存器来获取接收到的数据,并将其存储到相应的缓冲区中。同时,还可以进行数据处理的操作,例如解析协议、判断数据完整性等。 5. 当数据接收完成后,可以根据实际需求进行相应的后续处理。例如,可以通知主程序进行数据的处理和响应,或者发送相关的响应数据等。 需要注意的是,在使用串口空闲中断时,还需要设置适当的空闲时间。如果数据的传输速率较慢,可以适当增加空闲时间,以确保空闲中断能够被正确触发。 通过使用串口空闲中断,可以实现较为灵活和高效的串口通信,提高系统的数据接收和处理能力。同时,还可以减少CPU的负载,提高系统的响应速度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值