demon 发表于 2024-12-7 21:55:11

AI8051U使用UART3和spi后无法发送数据(已解决)

<p><img src="data/attachment/forum/202412/07/214924fnd0ef5b416dccmb.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/07/214946j05aadlaggdivxqq.png" alt="image.png" title="image.png" /></p>
<p>UART3利用的是timer3作为波特率发生器,并且口设置为p5.0 AND P5.1,只运行uart3初始化可以正常打印。<br />
但是打开TFTinit或者MT6701init函数后,uart3只能打印一个问号。<br />
下面为MT6701init函数,注释了spiconfig就可以正常打印。(其脚位并没有冲突)<br />
<img src="data/attachment/forum/202412/07/215312b58g2ph21qz8ze44.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/07/215325j77cobw7hppxv3x7.png" alt="image.png" title="image.png" /></p>
<p>请问这是为什么呢</p>
<p><img src="data/attachment/forum/202412/07/215420rhnrzqyho8qqq61e.png" alt="image.png" title="image.png" />不正常状态</p>
<p><img src="data/attachment/forum/202412/07/215447w2u9bhus1ibddru1.png" alt="image.png" title="image.png" />正常状态</p>

demon 发表于 2024-12-7 22:16:37

<p>刚刚使用仿真工具,发现其卡在发送的while(B_TX3_Busy);</p>

demon 发表于 2024-12-7 22:33:02

<p><img src="data/attachment/forum/202412/07/223207up6a9n9mus6rt7p7.png" alt="image.png" title="image.png" /><br />
这个中断函数进不去,因此B_TX3_Busy进不去<br />
刚刚把spiconfig的函数注释了,这个地方就进的去,很奇怪</p>

demon 发表于 2024-12-7 22:44:20

<p>求救,解决不了</p>

DebugLab 发表于 2024-12-7 22:45:10

B_TX3_Busy何时被置1了?

demon 发表于 2024-12-7 22:51:24

DebugLab 发表于 2024-12-7 22:45
B_TX3_Busy何时被置1了?

<p><img src="data/attachment/forum/202412/07/225018yqsgqji6666hhoo1.png" alt="image.png" title="image.png" /><br />
这只是历程中,设置标记中断的一个位,在发生数据后被置为1</p>

demon 发表于 2024-12-7 22:52:50

demon 发表于 2024-12-7 22:33
这个中断函数进不去,因此B_TX3_Busy进不去
刚刚把spiconfig的函数注释了,这个地方就进的去,很奇怪
...

这里是串口中断,当发送完就重新设置为0,就可以结束while进行下一步了

demon 发表于 2024-12-7 23:15:48

<p>求助,尚未解决</p>

zhp 发表于 2024-12-8 14:22:34

demon 发表于 2024-12-7 22:51
这只是历程中,设置标记中断的一个位,在发生数据后被置为1

如果确定程序是停在“while (B_TX3_Busy);”这里
可以试着将PrintfString3函数中的
S3BUF = *puts;和B_TX3_Busy = 1;两个语句交换一下位置
改为
B_TX3_Busy = 1;
S3BUF = *puts;

以防止B_TX3_Busy = 1;执行前,提前进入了串口3的中断
虽然可能性较小,但也不是不可能

demon 发表于 2024-12-8 14:47:02

zhp 发表于 2024-12-8 14:22
如果确定程序是停在“while (B_TX3_Busy);”这里
可以试着将PrintfString3函数中的
S3BUF = *puts;和B_TX ...

修改了,没有用
页: [1] 2
查看完整版本: AI8051U使用UART3和spi后无法发送数据(已解决)