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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
35条回答
FSL_TICS_LY
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();       
。。。
}

一周热门 更多>