ch32v307 串口空闲中断只能触发一次?

如题,目前在使用串口空闲中断时发现一个问题,空闲中断只能触发一次,把串口的状态寄存器打印出来看发现IDLE位置高了,但是也没有再次触发中断,以下是程序以及串口打印出来的数据(图一是给串口2发送的数据,让其触发中断),最开始的状态寄存器是192,接收到数据后变成了248触发IDLE中断,在中断服务程序中清除了中断标志位后再次变为192,再次接收数据变成248后却不再进入中断。希望有空能够解答一下,谢谢

1657847662164511.png

1657847662892167.png

1657847662104683.png

1657847681109929.png

希望有空能够解答一下。 谢谢

您好,对应中断函数注意加一下中断声明,参考下图。

image.png


谢谢,已成功

还想询问一下加这个 _attribute_((interrupt("WCH-Interrupt-fast")))有什么作用?

在使用freertos中发现加这个也还是会进入hard-fault中 但是加 _attribute_((interrupt()))就正常了,想询问一下这两个的区别是什么?


您好,这两个声明分别对应硬件压栈和软件压栈,关于对此的具体说明,可参考下面链接手册

QingKeV4微处理器手册:https://www.wch.cn/downloads/QingKeV4_Processor_Manual_PDF.html 

image.png


只有登录才能回复,可以选择微信账号登录