初级会员
- 积分
- 67
- 金钱
- 67
- 注册时间
- 2015-4-26
- 在线时间
- 3 小时
|
5金钱
在一个任务中,我想利用printf()函数打印一些数据至PC,在打印整形数据时正常。
但是,当打印的数据为浮点型时 ,数据出错,打印出来的是-2.00000
代码如下:
adcx=T_Get_Adc_Average(ADC_CH_TEMP,10);
printf("adcx:%d\r\n",adcx); //此处adcx打印正常 值为1752
temp=(float)adcx*(3.3/4096); //数据经过计算处理后 强制转化为float类型
temperate=temp;
adcx=temp;
temp-=(u8)temp;
temperate=(1.43-temperate)/0.0043+25;
printf(" CPU Temperature:%f\r\n",temperate); //在这里打印出来的数据就不对了 但是我将1752带入计算公式计算出 //来数据时21.7多 所以我怀疑是打印函数在打印浮点数的时候出现了问题。
经过查阅资料:网上说法如下
1.需要各个任务堆栈8字节对齐。
2.printf()中断函数问题。
3.配置NVIC寄存器的STKALIGN置位。
我尝试了1,无果。第二种情况OS中已经处理得当。现在对3不明白 希望大神指教
|
最佳答案
查看完整内容[请看2#楼]
已经搞定
堆栈的定义修改成这样就OK了
__align(8) static OS_STK CPUT_TASK_STK[CPUT_STK_SIZE];
谢谢
|