打印

使用GD32F103C8T6串口接收,不进入中断,RBNE自动清零了

[复制链接]
4229|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 未成熟的小麦 于 2019-9-18 18:00 编辑

刚接触这个系列的芯片,小白一个。开始调试GD32F103C8T6的串口接收功能,初始化的时候调用gd_eval_com_init(EVAL_COM0);初始化串口,串口能顺利发出数据了,但接收始终无法进入中断,仿真发现串口在收到一个byte以后,串口能收到,STAT也能把RBNE置1,但却不进入中断。

而且奇怪的是,当我点“执行下一步”执行任意一个语句的时候,DATA里面数据还在,RBNE自动清零了。这样就导致我把接收标志位检测放在主循环也收不到数据了。




512135d81fde6438de.png (14.8 KB )

512135d81fde6438de.png

使用特权

评论回复
沙发
sonicll| | 2019-9-18 19:47 | 只看该作者
本帖最后由 sonicll 于 2019-9-18 19:54 编辑

先确定有没有使能接收中断,有没有配置NVIC?
然后RBNE这个标志位,只要读USART_DATA寄存器就会清零,包括你在keil的窗口里看寄存器,也会清零。所以调试这种中断需要打断点,然后全速运行到断点,不要单步执行,或者不要开窗口观察寄存器,防止清零

使用特权

评论回复
板凳
未成熟的小麦|  楼主 | 2019-9-19 10:15 | 只看该作者
sonicll 发表于 2019-9-18 19:47
先确定有没有使能接收中断,有没有配置NVIC?
然后RBNE这个标志位,只要读USART_DATA寄存器就会清零,包括 ...

第一步,我在中断里面打了断点,但没进入中断。这样是不是能推出没开中断呢?
第二步,我把查询RBNE标志位的接收处理程序放在主循环了,里面加断点,仍然没进入。
然后我迫不得已才开观察窗口的。

使用特权

评论回复
地板
未成熟的小麦|  楼主 | 2019-9-19 10:48 | 只看该作者
sonicll 发表于 2019-9-18 19:47
先确定有没有使能接收中断,有没有配置NVIC?
然后RBNE这个标志位,只要读USART_DATA寄存器就会清零,包括 ...

可以了!非常感激~

使用特权

评论回复
5
18339739721| | 2019-9-20 17:06 | 只看该作者
楼主怎么解决了?我的好像也是进不去接收中断,但是可以发送数据

使用特权

评论回复
6
未成熟的小麦|  楼主 | 2019-10-8 11:36 | 只看该作者
18339739721 发表于 2019-9-20 17:06
楼主怎么解决了?我的好像也是进不去接收中断,但是可以发送数据

我的配置程序是这样的,你试试
/* configure COM0 */
        gd_eval_com_init(EVAL_COM0);
        usart_interrupt_enable(EVAL_COM0,USART_INT_RBNE);
        nvic_irq_enable(USART0_IRQn, 0, 2);

使用特权

评论回复
7
炫炫啊炫| | 2021-11-22 18:19 | 只看该作者
楼主,这个UASRT的中断标志位的窗口是怎么调出来的?

使用特权

评论回复
评论
思渺 2022-2-17 11:20 回复TA
仿真的时候,点击菜单栏的VIEW下的system viewer打开对应外设寄存器即可看到了 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

54

帖子

0

粉丝