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

在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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版