找回密码
 立即注册
查看: 918|回复: 10

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

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 21:55:11 | 显示全部楼层 |阅读模式

image.png

image.png

UART3利用的是timer3作为波特率发生器,并且口设置为p5.0 AND P5.1,只运行uart3初始化可以正常打印。
但是打开TFTinit或者MT6701init函数后,uart3只能打印一个问号。
下面为MT6701init函数,注释了spiconfig就可以正常打印。(其脚位并没有冲突)
image.png

image.png

请问这是为什么呢

image.png不正常状态

image.png正常状态

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 22:16:37 | 显示全部楼层

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

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 22:33:02 | 显示全部楼层

image.png
这个中断函数进不去,因此B_TX3_Busy进不去
刚刚把spiconfig的函数注释了,这个地方就进的去,很奇怪

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 22:44:20 | 显示全部楼层

求救,解决不了

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2025-08-25 08:55:51
已绑定手机

86

主题

5983

回帖

1万

积分

超级版主

积分
10844
发表于 2024-12-7 22:45:10 | 显示全部楼层
B_TX3_Busy何时被置1了?
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 22:51:24 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=127748&ptid=12511][color=#999999]DebugLab 发表于 2024-12-7 22:45[/color][/url][/size] B_TX3_Busy何时被置1了?[/quote]

image.png
这只是历程中,设置标记中断的一个位,在发生数据后被置为1

点评

如果确定程序是停在“while (B_TX3_Busy);”这里 可以试着将PrintfString3函数中的 S3BUF = *puts;和B_TX3_Busy = 1;两个语句交换一下位置 改为 B_TX3_Busy = 1; S3BUF = *puts; 以防止B_TX3_Busy = 1;执行前,提前  详情 回复 发表于 2024-12-8 14:22
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 22:52:50 | 显示全部楼层
dem*** 发表于 2024-12-7 22:33
这个中断函数进不去,因此B_TX3_Busy进不去
刚刚把spiconfig的函数注释了,这个地方就进的去,很奇怪
...

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

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-7 23:15:48 | 显示全部楼层

求助,尚未解决

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-08-21 09:25:58

29

主题

1166

回帖

4341

积分

超级版主

积分
4341
发表于 2024-12-8 14:22:34 | 显示全部楼层
dem*** 发表于 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的中断
虽然可能性较小,但也不是不可能
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-04-10 14:51:20
已绑定手机

9

主题

16

回帖

186

积分

注册会员

积分
186
发表于 2024-12-8 14:47:02 | 显示全部楼层
zh*** 发表于 2024-12-8 14:22
如果确定程序是停在“while (B_TX3_Busy);”这里
可以试着将PrintfString3函数中的
S3BUF = *puts;和B_TX ...

修改了,没有用
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-25 13:44 , Processed in 0.137779 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表