本帖最后由 SUPER_CRJ 于 2018-2-27 16:36 编辑
如下:在STM32F1编程中使用了类似下面的函数:
char Value[30];
sprintf( Value,"%3.1lf",19.0);
格式化后Value里面为0.0。但是之前是OK的,突然有一天不可以了,之前没有解决,查看网上的解决办法,说是8字节对齐,但是看了μc/OS-Ⅲ中的堆栈都是8的整数倍,怀疑是使用了:#para强制对齐造成的结果(项目其它地方使用的!)。现在要如何解决这个问题呢?我当前的方法是:sprintf( Value,"%d.%d",190/10,190%10);请问大家有没有更好的方法?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我遇到的问题跟你描述的一模一样。确实是堆栈8字节对齐问题所致!
上面代码确保了任务堆栈的8字节对齐
一周热门 更多>