找回密码
 立即注册
楼主: nxxdydrq

32G8K64 最简单的C代码都运行异常

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:142
  • 最近打卡:2025-04-30 09:17:52

11

主题

71

回帖

573

积分

高级会员

积分
573
发表于 2024-12-9 13:56:03 | 显示全部楼层
LAO*** 发表于 2024-12-9 13:42
if(admark[0]==0X00000000)

改成 if(admark[0]==0x00000000),  试试

大小写不一样吗?不应该区分大小写吧,有什么说法
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-12-9 14:06:25 | 显示全部楼层
你还是上传下工程吧,一张图说明不了问题呀
截图202412091405391767.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

积分
990
发表于 2024-12-9 14:39:51 | 显示全部楼层
关注一下。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:154
  • 最近打卡:2025-04-30 08:40:57
已绑定手机

15

主题

630

回帖

730

积分

高级会员

积分
730
发表于 2024-12-9 18:06:45 来自手机 | 显示全部楼层
mark一下
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-12-9 19:29:25 | 显示全部楼层

处理器和编译器的思维都是非常固执死板的,很多时候代码其他部分bug,导致某些不可思议结果,

比如开了中断,但没写中断函数.......

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-02 09:16:59

30

主题

347

回帖

3480

积分

荣誉版主

积分
3480
发表于 2024-12-9 21:18:01 | 显示全部楼层
根据本人的认知、体会, 扯谈几句,供楼主参考:
从STM32编译环境转场到C51或C251编译环境,也许有点不习惯的,两者功能差异很大,不能相提并论的。
KeilC编译环境,对于STC单片机而言:(印象中,从前对Intel 8051的仿真调试不是这样的)
凡是局部变量、形式参数,C251(或C51)的Debug仿真调试跟踪过程中,
设断点、鼠标悬停在变量上时,观察其数值时,一律显示0,
即不显示真实数值,即使加入Watch观察也不行。
目前就要认识和适应这样的现实了。
只有将变量设置为全局变量时, 才有可能跟踪观察其真值。
上述提到的变量,admark, 在这里不是什么全局临时变量, 而是行参,相当于局部变量, 所以别指望观察其真实的值。
这里,admark[0]的真实值,并非是0x00000000,所以实际上是等式不成立,所以不会执行 return 0;而是运行下一句。
可以认为这是“异常”,其实并没有出错。

如果程序语法和逻辑都不错的话,尽管跟踪观察不到其真实的值,但运行还是正常的,效果还是正确的。

有句话说,三分编程,七分调试。可见这“调试”充满着技巧和智慧的。
如何应对这样的现实呢?
有两种办法:一是“回避”,二是“改为全局”。
有的程序员编程从来不仿真调试,就是通过无数次的“下载”全速运行,利用项目的显示器件,反复设定观察点,反复纠正。
事实上,我们看到的许多例程,打开工程文件时,都看不到对Debug的有关设置。可以说就是“回避”的。
而当你来Debug调试时,常有可能出现很多警告。当然,HEX文件是可用没错的。
另一种方法就是将需要观察的变量设定为(或临时设为)全局变量,以便调试时,跟踪观察。
因此可看到一些例程大量使用全局变量。其实,这一点虽然没错,但不合结构化、模块化编程机理。

至于说,建议将0X00000000改写为0x00000000,应该是没有关系的。

在从前的相当长一段时间里,各种厂商对各种51单片机制造了各种仿真器,价格都不菲的,把许多业余爱好者挡在了门外。
而今,STC、AI单片机,仅仅用一根串口通讯线、或用一根USB通讯线,就能实现仿真调试,已经非常了不起了。
当然,STC、AI单片机仿真调试密切适配于Keil编译环境,还期待更进一步完善了。

多言了,仅供参考......

点评

在仿真一块,我是这样子的,除了偶尔局部代码的硬测外,基本不用仿真。 仿真这东西多了一个仿字,所以并不真,还会某明奇妙,正常代码有时候也会走挂。 用免费的printf吧, 如1楼所遇问题,在if前 printf(变量值)  详情 回复 发表于 2024-12-10 07:57
回复 支持 3 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 2024-12-9 21:29:56 | 显示全部楼层
浦江*** 发表于 2024-12-9 21:18
根据本人的认知、体会, 扯谈几句,供楼主参考:
从STM32编译环境转场到C51或C251编译环境,也许有点不习惯 ...

竟然是这样!!震惊了

可以说是keil的C51和C251的仿真调试模块有bug吗?

点评

本人认为不能这样说。 注意我上述“扯谈”中最后的一句话: “STC、AI单片机仿真调试密切适配于Keil编译环境,还期待...” 为何不这样写: “Keil 编译环境对 STC、AI单片机仿真调试的支持,还期待...”。 有何区别  详情 回复 发表于 2024-12-9 22:33
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-02 09:16:59

30

主题

347

回帖

3480

积分

荣誉版主

积分
3480
发表于 2024-12-9 22:33:23 | 显示全部楼层
VC*** 发表于 2024-12-9 21:29
竟然是这样!!震惊了

可以说是keil的C51和C251的仿真调试模块有bug吗?

本人认为不能这样说。
注意我上述“扯谈”中最后的一句话:
“STC、AI单片机仿真调试密切适配于Keil编译环境,还期待...”
为何不这样写:
“Keil 编译环境对 STC、AI单片机仿真调试的支持,还期待...”。
有何区别吗?
Keil 大概率在View/Watch windows /watch1...中有观察变量的功能,不会是形同虚设的.
相比较, Keil MDK V4.XX  V5.XX for STM32 的编译环境, 都是做得非常好的.
这是个人的体会感觉,希望是片面的、错误的,大家可以反复实践验证。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-12-10 07:57:26 | 显示全部楼层
浦江*** 发表于 2024-12-9 21:18
根据本人的认知、体会, 扯谈几句,供楼主参考:
从STM32编译环境转场到C51或C251编译环境,也许有点不习惯 ...

在仿真一块,我是这样子的,除了偶尔局部代码的硬测外,基本不用仿真。
仿真这东西多了一个仿字,所以并不真,还会某明奇妙,正常代码有时候也会走挂。

用免费的printf吧,
如1楼所遇问题,在if前 printf(变量值),比真金还真。啥问题没有。
如确实是0又不判断,则可翻看汇编代码,基本上这种问题花很少的时间就可以搞定问题出在哪
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:176
  • 最近打卡:2025-02-19 17:24:49

15

主题

265

回帖

1387

积分

金牌会员

积分
1387
发表于 2024-12-10 08:29:50 | 显示全部楼层
不要用0x00000000;直接用十进制的0;
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 11:13 , Processed in 0.551424 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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