原来在51单片机上些了个接收数据并解析数据的程序,解析数据为了看起来工整,使用了逐层函数判断,所以函数里面套函数,可能有有五层吧,数据是ASCII码,所以在最终解析字符串时使用了C标准库函数atof(),这个代码在51单片机上运行没有问题,但是移植到STM32处理器后,在最内层的函数调用时,一旦执行atof函数,程序便跳转到函数HandFault_Handler,感觉是程序跑飞了,后来想,是不是调用atof的地方有些深,于是拿个字符串测试
到哪一层atof会跑飞,因为在主函数调用该atof没有问题,于是逐级试,最后发现一个很奇怪的现象,将该函数放于与该同级的前一个调用的函数中,原来跑飞程序的地方程序运行正常了。但是将在另一个地方增加的atof注释掉后,这个又跑飞了。不知是什么问题。也不知道有没有人遇到过这个问题。后来我解决的办法是不要该函数了,直接在调用函数的地方直接写atof函数,转换字符串。现在程序运行正常。但是,总感觉还是有问题,不知有没有人遇到过。求指点 |