本人用CCSv5,TM4C123Gh6mz MCU,尝试用sprtinf() 将浮点数交换成字符串,程序走到sprtinf(),就出现异常如下:
1. 设置了断点,看上去正常。
2. 用步进功能走下一步,程序跑到FaultISR(void)。
另外,专门写个小程序试试:
哪位能帮帮忙,又或者用的方法实现浮点数变成字符串而不用sprintf()。
先谢了。
Ng
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
本人用CCSv5,TM4C123Gh6mz MCU,尝试用sprtinf() 将浮点数交换成字符串,程序走到sprtinf(),就出现异常如下:
1. 设置了断点,看上去正常。
2. 用步进功能走下一步,程序跑到FaultISR(void)。
另外,专门写个小程序试试:
哪位能帮帮忙,又或者用的方法实现浮点数变成字符串而不用sprintf()。
先谢了。
Ng
苦行僧你好,去掉sprintf()这一句,程序运行正常。
sprintf()这个是纯c的语句,和硬件也应该没关系呀,我也搞不清这为什么和硬件锁住有关,可是你的截图不就是那么提示的么,感觉是你CCS配置的问题
Wei ding6你好,
我只是针对需要而写的小程序,仅供参考。
void ftoa4int2point(float fnum, char* Txout) {
//整数4位,小数2位
int indata1, indata2, intthu, inthun, intten, intone, inpone, inpten; //, inphun, inpthu;
indata1 = (int)fnum; //取整数部分
indata2 = (int)((fnum - (float)indata1) * 100); //取小数部分,要2位
intthu = (indata1 / 1000); //整数千位
inthun = (indata1 - (intthu*1000)) / 100; //整数百位
intten = (indata1 - (intthu*1000) - (inthun*100)) / 10; //整数十位
intone = indata1 - (intthu*1000) - (inthun*100) - (intten*10); //整数个位
inpone = indata2 / 10; //小数个位
inpten = indata2 - inpone*10; //小数十位
//inphun = (indata2 - inpone*1000 - inpten*100) / 10;
//inpthu = indata2 - inpone*1000 - inpten*100 - inphun*10;
Txout[0] = (char)(intthu + 0x30);
Txout[1] = (char)(inthun + 0x30);
Txout[2] = (char)(intten + 0x30);
Txout[3] = (char)(intone + 0x30);
Txout[4] = (char)('.');
Txout[5] = (char)(inpone + 0x30);
Txout[6] = (char)(inpten + 0x30);
//Txout[7] = (char)(inpthu + 0x30);
}
交换后,整数部分的高位如果没有值,是用零补上,如果你不喜欢整数的左边有零,就加上几句把它们去掉吧。
希望能帮到你。
NgLT