DENGCHOW
DENGCHOW

注册于 1 year ago

回答
6
文章
4
关注者
6

传输数据要约定格式的,比如规定大小端、符号位位数等,接收端原样解析即可。可参考modbus中16bit的数据传输(如保持寄存器、输入寄存器等)

以前接触过一款smart的变种,用户程序是bin。目前的smart还没有看源码实现,不太清楚,但无非就是elf和bin两种方式

貌似env也没和rt-thread绑定吧,生成工程、编译都不是env做的,是scons完成的,类似make和cmake。
再具体的还是请rt官方人员解答,以上仅个人拙见。

1.中断栈?如果你指的进入中断后用的那个栈的话,这个通过启动文件.s中可以设置。至于如何确定合理的大小,这个就比较难了,看你函数嵌套几层、被调用的函数局部变量申请情况如何……和裸机下使用没什么区别,一般习惯在分散加载时先放全局变量,然后堆,最后栈(实际linker也是默认这么做的),栈顶设置在sram最后,所以即便溢出了,也是先覆盖你的堆区,影响不会太大,当然你说你堆区都被用完了,那栈溢出堆区数据也没了。
2.同1中的解释。问题表现就是数据被冲了,至于产生什么后果,不好说,具体情况具体具体分析。
至于3.4,这个就不太了解了。

个人拙见,插不插串口应该都不会这条语句的执行,USART是外设,只要外设把数据一位一位的发出去,TC就置位了,这里就不会卡住。你出现的卡死的问题应该从时钟方面考虑,简单说就是USART工作异常

和你.c文件的编译链接顺序有关

上下所有键也是编码的,如:方向键-上=1B 5B 41,方向键-下=1B 5B 42,方向键-左=1B 5B 44,方向键-右=1B 5B 43。编码里有ABCD的ascii码,所以会不会你的终端不支持上下所有键?

楼主解决了么?是和c11/c99有关么?我觉得是和编译的时候没编译调试的信息导致的吧(像keil下如果不勾选debug information就会出现这种情况,iar不太熟悉)

我用的是keil,keil有一个fromelf工具,可以从axf文件中得到反汇编代码。
看一下应用程序在flash中的存储位置,和hardfault信息中的pc相减得到相对偏移,然后再反汇编代码中查找

发布
问题