移植一些算法到STM32上,算法在PC上能够运行,而移植到STM32的时候就会出现问题, 总结来说主要是因为编译器的版本不同,MDK5的编译器是很古老的编译器,有些C语**有问题。 常见的问题就是: 结构体赋值的时候,在32里面的代码,结构体赋值必须要一个变量一个变量的赋值,不能够直接赋值。 或者定义变量的时候不能用的时候才定义变量,需要将变量放在这个模块的前面 将算法移植到STM32的时候,首先要考虑的就是STM32的内存大小是否足够大,如果不够大,一般就是报有.ANY的一些错误。(所以建议一开始移植算法的时候使用比较好的硬件条件来移植,不然后面出了问题可能都不知道到底在哪里出错了) 如果定义的数组太大,超出了STM32堆栈的大小,那么STM32就会进入Hardfault。(因为进入Hardfault会有延时一行代码,所以建议查看Hardfault的时候建议使用上一盘中JTAG调试窗口中查看中断的窗口,能够更明白的清除Hardfault在哪里产生的)
|