OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3047|回复: 9

关于程序运行不正常的问题

[复制链接]

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-28 21:43:04 | 显示全部楼层 |阅读模式
5金钱
我在原子哥的例程实验的基础上加了一些自己的代码,代码有些长,而且用到很多的全局变量。结果是编译没有错误,但是程序每次都运行一半就不动了,每次都是哪一个位置,我仔细查看了哪一步就是数组的赋值,很简单的语句,应该没有错误啊,请问是什么原因每次都卡在哪里?
一般程序卡住不继续运行都有什么原因呢?             谢谢

最佳答案

查看完整内容[请看2#楼]

for里面的i是什么类型
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-28 21:43:05 | 显示全部楼层
lol 发表于 2016-7-28 22:06
我知道数组如果大了的话不能再函数内部声明,所以我在函数最开头设置了全局数组,并用at+地址的方式存进了 ...

for里面的i是什么类型
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-28 21:53:17 | 显示全部楼层
最好能有截图或关键代码,不然随便猜个结果,很可能误导你
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
 楼主| 发表于 2016-7-28 21:56:19 | 显示全部楼层
ianhom 发表于 2016-7-28 21:53
最好能有截图或关键代码,不然随便猜个结果,很可能误导你

您说的有道理,我准备一下具体东西,谢谢您
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
 楼主| 发表于 2016-7-28 22:06:32 | 显示全部楼层
我知道数组如果大了的话不能再函数内部声明,所以我在函数最开头设置了全局数组,并用at+地址的方式存进了外部SRAM(否则提示NO SPACE)。通过控制high2和wide2控制二维数组的大小,当high2和wide2都比较小时候,程序没有问题,但是high2和wide2稍大一点就会卡在图三的那个for 循环里。这个循环不是死循环啊,为什么会卡在这里?      声明的全局数组越大,会影响什么?

这个是二维数组的定义,用high和wide控制大小

这个是二维数组的定义,用high和wide控制大小

宏定义方便改

宏定义方便改

卡在这里,后边不执行了

卡在这里,后边不执行了
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
 楼主| 发表于 2016-7-28 22:11:28 | 显示全部楼层
ianhom 发表于 2016-7-28 21:53
最好能有截图或关键代码,不然随便猜个结果,很可能误导你

您方便再帮我看看嘛?很纠结,为什么数组元素少什么事没有,元素增加程序只执行一半?谢谢啦
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
 楼主| 发表于 2016-7-28 22:29:47 | 显示全部楼层
ianhom 发表于 2016-7-28 22:15
for里面的i是什么类型

您真厉害! 一语中的! u8  i=0,显然是不够的,实在是太谢谢您了!非常感谢   
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-28 22:32:26 | 显示全部楼层
是一直执行for循环出不去吗?还是进入了hardfault中断?
看一下i的类型,如果wide2定义比较大的话,14*2*wide2可能比i类型最大值都大,那i <14*2*wide2这个条件永远满足,就会在这个for中无限循环
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-28 22:37:45 | 显示全部楼层
呵呵,解决了就好
给个小小的建议啊,虽然大家编码都有自己的风格,命名规范不用强求,不过变量命名时注明类型还是有一定益出的,如果你命名为u8i,或许你多看几眼代码自己就能找到问题了,别人帮你分析问题也方便
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
 楼主| 发表于 2016-7-28 22:44:24 | 显示全部楼层
ianhom 发表于 2016-7-28 22:37
呵呵,解决了就好
给个小小的建议啊,虽然大家编码都有自己的风格,命名规范不用强求,不过变量命名时注明 ...

小弟知道了,编程还是太过于随意了,以后注意。谢谢您
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 05:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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