我正在读取通过RS485发送的值,这个值是编码器的数据。首先,我会检查它是否返回了E字符(表示编码器出现了错误)。如果没有,我会执行以下操作:
*position = atoi( buffer );
// Also tried *position = (s32) strtol(buffer,NULL,10);
缓冲区中的数值为4033536,位置被设置为33536。在这个函数中,这种情况不是每次都会发生,可能只有1000次中的1次,虽然我没有计算。如果重新设置程序计数器并再次执行该行失败,则返回相同结果,但重新启动调试器会导致该值正确转换。
我正在使用Keil uVision 4,这是一个使用STM32F103VET6和STM32F10库V2.0.1的自定义板。这个问题真的让我感到困惑,以前从未遇到过这样的情况,非常感谢任何帮助。
谢谢。