找回密码
 立即注册
查看: 1011|回复: 7

(已解决)咨询:STC12C5204AD串口通信问题

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-06-13 16:46:04
已绑定手机

10

主题

103

回帖

472

积分

中级会员

积分
472
发表于 2023-10-10 11:28:32 | 显示全部楼层 |阅读模式
本帖最后由 haishi28 于 2024-3-15 15:33 编辑

一款老的STC12C52芯片,串口通信问题很奇怪,大家帮忙看看。
前两张图,发送结果与理论一致;后两张图,发送的最后一个字节,变成0x00,是什么原因造成的呢?
截图202310101124331472.jpg
截图202310101125182157.jpg
截图202310101126088591.jpg
截图202310101126408214.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:102
  • 最近打卡:2025-06-19 09:56:48

734

主题

1万

回帖

1万

积分

管理员

积分
16734
发表于 2023-10-10 14:21:40 | 显示全部楼层
烧录程序时一定要选择【下次重新上电使用外部晶振】
截图202310101420489584.jpg

截图202310101424266507.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-06-13 16:46:04
已绑定手机

10

主题

103

回帖

472

积分

中级会员

积分
472
发表于 2023-10-10 17:19:18 | 显示全部楼层
神*** 发表于 2023-10-10 14:21
烧录程序时一定要选择【下次重新上电使用外部晶振】

感谢你的回复。我目前的确是使用的内部晶振,是会出现由于内部晶振偏差导致的数据乱码,但我不太理解的是为什么在连续调用SendData(temp)时,会出现第二次调用,就是00,如果我在调用SendData(temp)之前对temp赋值,则发送结果就不会错。上午我跟梁工沟通过,他觉得是我的变量不是全局的,可能被中途改写了。
后面我会使用外部晶振,temp也改成全局试一下。
会不会是我的编译器,配置的不对呢?
或者是芯片损坏了?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-06-13 16:46:04
已绑定手机

10

主题

103

回帖

472

积分

中级会员

积分
472
发表于 2023-10-10 17:27:31 | 显示全部楼层
神*** 发表于 2023-10-10 14:21
烧录程序时一定要选择【下次重新上电使用外部晶振】

再补充一个疑问:如果我用内部晶振,是不是只是应该影响发送的数据的波特率会有偏移,而不是不发送数据了?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:102
  • 最近打卡:2025-06-19 09:56:48

734

主题

1万

回帖

1万

积分

管理员

积分
16734
发表于 2023-10-10 17:50:13 | 显示全部楼层
只是波特率不对,你可以换 STC12H1K16--内部时钟准
截图202310101746378904.jpg


截图202310101749058926.jpg

https://www.stcaimcu.com/forum.p ... =4522&pid=30443

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-06-13 16:46:04
已绑定手机

10

主题

103

回帖

472

积分

中级会员

积分
472
发表于 2024-3-12 11:22:53 | 显示全部楼层
解密问题!
这个问题并不是代码导致的,也不是晶振不准导致的。
原因是Keil里的工程配置:
使用的芯片和Memory Model不匹配。有小伙伴遇到同样问题,可以联系我,一起探讨,
我也没太理解这个配置的正确用法。
我现在是配置成small。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:470
  • 最近打卡:2025-06-19 00:01:06
已绑定手机

19

主题

3233

回帖

5297

积分

论坛元老

积分
5297
发表于 2024-3-15 09:58:44 | 显示全部楼层
keil配置还会影响运行结果
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-06-18 08:47:22

33

主题

2450

回帖

5184

积分

论坛元老

积分
5184
发表于 2024-3-15 10:09:21 | 显示全部楼层
hais*** 发表于 2024-3-12 11:22
解密问题!
这个问题并不是代码导致的,也不是晶振不准导致的。
原因是Keil里的工程配置:

我记得这个small 和 large 会改变编译器编译代码的时候变量的内存位置,,small 是存放在data区,large模式是优先存放在xdata,,我感觉你可以看看map地址,,看看你的那个temp变量地址在什么地方又被使用了,,主要是观察中断函数,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-19 10:04 , Processed in 0.140722 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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