STC8A8K48D4
在一段时间内,频繁使用定时器,通过串口接收数据,其RI2位不能置1,等定时器使用结束后才可以进入串口中断,什么原因?串口用的定时器和频繁使用的定时器不是同一个
串口优先级也设置了
串口中断里EA也关了
是什么原因? 楼主你好,可以先用我们的范例程序测试下
定时器0的中断标志清错了
另外,定时器0~4,INT0~4的中断标志都是硬件自动清的,不需要软件清
中断里面也不建议关EA
串口设置没什么问题
现在就是刚开机的自检用到定时器0自检,然后在定时器0工作过程中,使用串口UART2定时器2,RI2位无法置1
然后在程序中再次调用开机时的自检函数,串口二定时器二又可以正常置位进入中断
我尝试把开机的程序写成调用的指令,但是还是一样的问题
是不是第一次通讯置位会有点问题 zhp 发表于 2023-6-27 15:15
定时器0的中断标志清错了
嗯。。确实清错了
我看网上一些人说在串口接收中断中最好把EA关掉
我把这些改了,但是还是解决不了问题 本帖最后由 zhp 于 2023-6-27 15:50 编辑
zwx 发表于 2023-6-27 15:42
嗯。。确实清错了
我看网上一些人说在串口接收中断中最好把EA关掉
我把这些改了,但是还是解决不了问题 ...
“刚开机的自检用到定时器0自检,然后在定时器0工作过程中,使用串口UART2定时器2,RI2位无法置1”
这里面的逻辑有点想象不出
如果方便的话,你可以将你的代码简化一下
打包发出来,我这边用实际的芯片跑一下看看效果
这样比较好确定问题 我发给你那个问题的主要部分,你看一下
zwx 发表于 2023-6-27 16:15
我发给你那个问题的主要部分,你看一下
这个 zhp 发表于 2023-6-27 15:47
zwx 发表于 2023-6-27 15:42
嗯。。确实清错了
我看网上一些人说在串口接收中断中最好把EA关掉
简化 本帖最后由 zhp 于 2023-6-27 20:28 编辑
zwx 发表于 2023-6-27 17:24
简化
你给的代码我整了半天也没整到可以正常编译通过并产生hex
没法实际运行帮你debug
最好你能将代码简化(无关代码暂时全部屏蔽)后,你自己能编译通过,且问题一定能复现
并描述一下复现过程,这样才好帮你
页:
[1]
2