找回密码
 立即注册
查看: 59|回复: 11

C251中断中取code数组是错误的数据

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2025-12-15 11:31:02
已绑定手机

270

主题

392

回帖

2162

积分

金牌会员

积分
2162
发表于 昨天 11:31 | 显示全部楼层 |阅读模式
截图202512151129042393.jpg


中断里取上面三个表格中的数据,取出来的数据全是错误的,不管用code定义还是用const定义,读出来就是错的。
把这个函数放在主循环中读出来是正确的。

一开始还以为中断过快导致的,然而在进入中断就关闭中断结果也是一样的
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-12-16 08:24:09
已绑定手机

19

主题

541

回帖

1915

积分

金牌会员

积分
1915
发表于 昨天 13:13 | 显示全部楼层
ecode
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:745
  • 最近打卡:2025-12-16 01:04:43

11

主题

1271

回帖

6655

积分

论坛元老

积分
6655
发表于 昨天 14:15 | 显示全部楼层

char  code CODE_STR[] = "64K地址范围内数\xfd据表格定义演示";
char ecode ECODE_STR[] = "超64K地址范围内数\xfd据表格定义演示";

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2025-12-15 11:31:02
已绑定手机

270

主题

392

回帖

2162

积分

金牌会员

积分
2162
发表于 昨天 14:35 | 显示全部楼层
angm*** 发表于 2025-12-15 14:15
char  code CODE_STR[] = "64K地址范围内数\xfd据表格定义演示";
char ecode ECODE_STR[] = "超64K地址范 ...

我也没超64k啊

试了下定义成ecode读出来也是错的


你帮我测一下吧,搞不懂这软件 FOC.7z (101.59 KB, 下载次数: 2)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2025-12-15 11:31:02
已绑定手机

270

主题

392

回帖

2162

积分

金牌会员

积分
2162
发表于 昨天 14:50 | 显示全部楼层

试了下定义成ecode读出来也是错的

你帮我测一下吧,搞不懂这软件 FOC.7z (101.59 KB, 下载次数: 2)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:745
  • 最近打卡:2025-12-16 01:04:43

11

主题

1271

回帖

6655

积分

论坛元老

积分
6655
发表于 昨天 15:23 | 显示全部楼层
QQ6243*** 发表于 2025-12-15 14:35
我也没超64k啊

试了下定义成ecode读出来也是错的

如果代码大小在 64K 以内,选择“ Large”模式即可。


由于 STC32G 的程序逻辑地址为 FE:0000H~FF:FFFFH,需要使用 24 位地址线才能正确访问,默认的常
量类型(程序存储器类型)必须使用“ far”类型,默认指针变量必须为 4 字节。
不建议使用“ Small”“ Tiny”和“ XTiny”模式,推荐使用“ XSmall”模式,这种模式默认将变量定义
在内部 RAM(edata),单时钟存取,访问速度快,且 STC32G12K128 系列芯片有 4K 的 edata 可以使用;使用
“ Small”模式时, 默认将变量定义在内部 RAM(data), data 默认只有 128 字节,当用户对 RAM 需求超过 128
字节时, Keil 编译器会报错, data 区数量有限,容易报错,所以不建议使用;不推荐使用“ Large”模式, 虽
然该模式也能正确访问 STC32G 的全部 16M 寻址空间,但“ Large”模式默认将变量定义在内部扩展 RAM(xdata)
里面,存取需要 2~3 个时钟,访问速度慢

如果代码大小在 64K 以内,选择“ Large”模式即可。若代码大小超过 64K,则需要选择“Huge”
模式,并需要保证单个函数以及单个文件的代码大小必须在 64K 字节以内,并且单个表格的数据量也必
须在 64K 字节以内。


屏幕截图 2025-12-15 153014.png

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2025-12-15 11:31:02
已绑定手机

270

主题

392

回帖

2162

积分

金牌会员

积分
2162
发表于 昨天 16:00 | 显示全部楼层
angm*** 发表于 2025-12-15 15:23
如果代码大小在 64K 以内,选择“ Large”模式即可。

我就选择Huge,搞得好像不能选一样,设置成你写的配置本来正常的功能就不正常了
ROM设置的地址是错的,EEPROM没有扣除,超出的部分直接被ISP截断了
不要老盯着设置看,我的设置没有问题,我问题问的很清楚,BiHuan()这个函数在大循环中运行没有问题,只有在中断里面才会错问题
官方的设置只是个建议,我不接受官方的建议
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-12-16 08:53:16
已绑定手机

97

主题

3858

回帖

8340

积分

荣誉版主

无情的代码机器

积分
8340
发表于 昨天 17:22 | 显示全部楼层

看着和在不在中断中读没关系:
03-PWMA-4个捕获通道P2口.zip (57.24 KB, 下载次数: 0)
截图202512151720381986.jpg

截图202512151721297387.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2025-12-15 11:31:02
已绑定手机

270

主题

392

回帖

2162

积分

金牌会员

积分
2162
发表于 昨天 17:27 | 显示全部楼层
erci*** 发表于 2025-12-15 17:22
看着和在不在中断中读没关系:

我也试了下好像跟中断里面读写无关,我的PWM模块时12MHZ PLL到144MHZ,我看下载程序是只有11.998MHZ,这个有影响吗
感觉像PWM的问题

点评

下载有12M,PLL到144也在手册范围内 [attachimg]124608[/attachimg]  详情 回复 发表于 昨天 17:31
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-12-16 08:53:16
已绑定手机

97

主题

3858

回帖

8340

积分

荣誉版主

无情的代码机器

积分
8340
发表于 昨天 17:31 | 显示全部楼层
QQ6243*** 发表于 2025-12-15 17:27
我也试了下好像跟中断里面读写无关,我的PWM模块时12MHZ PLL到144MHZ,我看下载程序是只有11.998MHZ,这 ...

下载有12M,PLL到144也在手册范围内



截图202512151729361223.jpg

三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-16 10:08 , Processed in 0.125209 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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