如图,向串口发送数据时,能够触发接收中断,但无法触发空闲中断,在串口配置中已经把接收、空闲中断打开了
芯片是CH32V103C8T6
您好,以下几个点需要注意一下:
1、中断函数注意要加中断声明;
2、串口初始化中要注意使能开启空闲中断;
3、关于空闲中断标志位的清楚,先读状态寄存器再读数据寄存器清楚该位,如下图
附件为V103串口空闲中断例程,可以参考一下。后续若有问题,可邮箱(lzs@wch.cn)沟通
印象中,状态寄存器也要一并清除的。
还有就是这单片机抗干扰是很弱的,是不是干扰太大了?是不是144MHz最高主频运行了?
曾经仿真时电脑主机漏电导致串口一大堆乱七八糟数据,曾经手碰到开发板的GND都能触发串口中断...
所以现在全部都弄到DMA收发,查询串口空闲状态IDLE认为接收完成、查询串口发送完成标识TC认为发送完成,不弄那么多中断浪费没必要的CPU。
空闲中断是打开的,但是进不来,还没有走到清除中断标志位那一步
您好,若方便可将工程发至我的邮箱(lzs@wch.cn),这边具体看一下
您好,工程文件已发送至您的QQ邮箱,请注意查收,麻烦您了
您好,工程中中断函数注意加中断声明,参考下图。我看你工程中中断函数都没有加中断声明。此外工程中打印串口使用的是串口1,你可以改为使用串口3,不然两个串口1冲突了。
问题已解决,非常感谢!在函数声明后加入楼上圈出的内容即可正常执行中断函数