freescale的CW我只能用弱智形容

2020-02-19 21:08发布

const S8 me[]={"
Command list:
ME or HELP or /?
REPORT
READ
CLEAR
HEX
RESET ALL
SET DATETIME DD/MM/YYYY HH:MM:SS
SET BAUDRATE n(600-115200)
SET FLASH 1|0(En|Dis) 20(OnTime) 10(OffTime) 90(Period)
SET TIMES 100(Transtime) 20(ADtime)
SET LUX 1 10 100 1000
SET LS 20 500 3000
SET SPEED n(Low) n(High) n(Low_R) n(High_R)
"};

void ComMe()
{
SciPutsC(me);
}

这样可以正常运行
把me定义到函数ComMe里面就发送一堆乱码出来,跟踪进去发现,如果me定义在ComMe里面,me被翻译成指令,进入ComMe不是去执行SciPutsC,而是执行了me对应的机器码

之前就发现了CW的几个bug,报告到freescaleic.org,没什么反馈,现在又发现这种低级bug。这个项目作的我真痛苦。
- CodeWarrior for MCU
         Version: 10.4
         Build Id:130425
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
postek
1楼-- · 2020-02-20 03:07
 精彩回答 2  元偷偷看……
liuqian
2楼-- · 2020-02-20 06:56
和堆栈无关,const字符串是放在flash的,不是放在ram
anvy178
3楼-- · 2020-02-20 11:57
这种定义到FLASH 里面的东西  都习惯在外面弄好了  没放进函数里面搞过。
FSL_TICS_LY
4楼-- · 2020-02-20 12:45
在CW 10.5下试了一下楼主的问题,没有问题啊。
我用K60的片子做的测试
楼主用的是那个芯片,S08还是kinetis 还是别的片子?

我的代码:
#include "derivative.h" /* include peripheral declarations */
#include <stdio.h>

signed char dest[50];

void ComMe(){
        const signed char me[]={"
        Command list:
        ME or HELP or /?
        REPORT
        READ
        CLEAR
        HEX
        RESET ALL
        SET DATETIME DD/MM/YYYY HH:MM:SS
        SET BAUDRATE n(600-115200)
        SET FLASH 1|0(En|Dis) 20(OnTime) 10(OffTime) 90(Period)
        SET TIMES 100(Transtime) 20(ADtime)
        SET LUX 1 10 100 1000
        SET LS 20 500 3000
        SET SPEED n(Low) n(High) n(Low_R) n(High_R)
        "};
        sprintf(dest, "this test is %s", me[1]);
}

int main(void)
{
。。。       
        ComMe();       
。。。
}
bpshui
5楼-- · 2020-02-20 17:26
这个工具又不是你一个人用,不要动不动就喷.
在定义数组的时候加个static试试。
huangqi412
6楼-- · 2020-02-20 20:38
 精彩回答 2  元偷偷看……

一周热门 更多>