你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在uCGUI的回调函数里加了行代码,32无法启动

[复制链接]
ygowill 提问时间:2018-12-18 00:10 /
我是一个初学者。最近在写一个uCGUI上的小应用的时候遇到了这样的问题,我在MULTIEDIT控件的回调函数里加了一行代码,运行我自己写的一个用于计算的函数,在没有加这一行代码的时候运行起来没有问题,但是在加上这一行代码后系统无法正常运行。我在debug模式里查看,发现整个程序卡在了startup_stm32f10x_xl.s那个文件中的Reset_Handler处,但是去掉那一行代码,程序在debug模式中可以正常的进入main,问题在于那个函数我在电脑上测试过输入输出,是没有问题的,而且在回调函数中也不应该影响到系统的启动,这让我非常疑惑,找了一天的问题也没有找到,想请教论坛的各位,问题有可能出现在什么地方?我先在这里谢谢各位了。整个工程有点大,发不上来,我将代码附在下面

IMG_5699.JPG


code.zip (2.56 MB, 下载次数: 3)
收藏 评论6 发布时间:2018-12-18 00:10

举报

6个回答
zccdyfw 回答时间:2018-12-18 09:56:52
可以借鉴一下,谢谢
ygowill 回答时间:2018-12-18 13:07:13
现在的情况是我在project的option里把use micro lib勾选了,再烧录就能正常进去了。由于我的回调函数是写在按钮释放的事件里的,现在是按钮一直显示按下去的状态,不能弹起,整个页面卡死,所有别的按钮都不能响应了。但是在电脑上测试这个calc函数是能正常输入输出的,不知各位知不知道是什么问题。那个calc函数在code/Calculator/Calculator.c里。
IMG_5702.jpg

tanic 回答时间:2018-12-18 13:20:53
你的calc函数再哪个个文件里,应该是平台问题了
不想用source insight
ygowill 回答时间:2018-12-18 15:32:09
本帖最后由 ygowill 于 2018-12-18 15:37 编辑
tanic 发表于 2018-12-18 13:20
你的calc函数再哪个个文件里,应该是平台问题了
不想用source insight

calc函数在我发的code里,在code/Calculator/calculator.c最后,中间函数调用稍微有点复杂,大致是先分析字符串中的token,然后用一个符号栈和一个数值栈去计算后缀表达式,最后返回结果的字符串。主要是我不知道怎么调试这东西,然后不知道程序卡在哪里,就不知道怎么debug了
ygowill 回答时间:2018-12-18 16:02:06
tanic 发表于 2018-12-18 13:20
你的calc函数再哪个个文件里,应该是平台问题了
不想用source insight

听了您的话我找到问题了,启动文件里我堆大小只定义了0x200,然后在clac里malloc了很多,然后分配不到内存就一直在循环,就卡在那里了。确实是平台的问题,我把heap_size定义到0x2000就好了。谢谢您
tanic 回答时间:2018-12-18 17:54:43
ygowill 发表于 2018-12-18 16:02
听了您的话我找到问题了,启动文件里我堆大小只定义了0x200,然后在clac里malloc了很多,然后分配不到内 ...

不客气,malloc用freertos中的那个heap4.c似乎好些,标准C自带的听说不好
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版