TI中文支持网
TI专业的中文技术问题搜集分享网站

sprintf()函数在CCS7.20版本使用问题

     sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%d\r\n", pSSID, pPassWord, enunPsdMode );

先描述一下问题:这个函数的问题是由于%d引起的,enunPsdMode 是一个枚举变量。因为也不知道sprintf底层怎么跑的,已经看了工程配置,library function assumptions是支持的full。按道理,应该支持所有数据类型的。但实际按上述运行,在执行sprintf时会进入非法中断,illegal interrupt。然后如果我把enunPsdMode 用一个字符串替代,就无问题,并且功能正常,可以支持%s 字符串类型。已经把论坛上sprintf经常出问题的贴看了,其它地方应该都无问题。是不是CCS版本的问题,就像有的版本也不支持memcpy这样的函数。之前在我的CCS7.20版本,sprintf和memcpy函数均正常,但好像在同事6点几的版本,这两个函数就出现了问题。

     sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%s\r\n", pSSID, pPassWord, s);

Susan Yang:–printf_support 的设置都是可以支持%d的

full: Supports all format specifiers. This is the default.

nofloat: Excludes support for printing floating point values. Supports all format specifiers except %f, %g, %G, %e, and %E.

minimal: Supports the printing of integer, char, or string values without width or precision flags. Specifically, only the %%, %d, %o, %c, %s, and %x format specifiers are supported

您先参考下 processors.wiki.ti.com/…/Printf_support_in_compiler 内的说明

     sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%d\r\n", pSSID, pPassWord, enunPsdMode );

先描述一下问题:这个函数的问题是由于%d引起的,enunPsdMode 是一个枚举变量。因为也不知道sprintf底层怎么跑的,已经看了工程配置,library function assumptions是支持的full。按道理,应该支持所有数据类型的。但实际按上述运行,在执行sprintf时会进入非法中断,illegal interrupt。然后如果我把enunPsdMode 用一个字符串替代,就无问题,并且功能正常,可以支持%s 字符串类型。已经把论坛上sprintf经常出问题的贴看了,其它地方应该都无问题。是不是CCS版本的问题,就像有的版本也不支持memcpy这样的函数。之前在我的CCS7.20版本,sprintf和memcpy函数均正常,但好像在同事6点几的版本,这两个函数就出现了问题。

     sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%s\r\n", pSSID, pPassWord, s);

mangui zhang:堆栈设置大一些看看与版本关系不大吧重要的是工程属性下的设置
最好对比一下

赞(0)
未经允许不得转载:TI中文支持网 » sprintf()函数在CCS7.20版本使用问题
分享到: 更多 (0)