我使用带有 Openstm32(GCC 编译器)的 STM32F407。如果我使用 sprintf("...%d",integer),程序似乎会崩溃(调试器直接在 sprintf 处停止),但如果我使用 sprintf("string"),它似乎工作正常。有人知道可能出了什么问题吗?
int main(void)
{
TM_MPU6050_t MPU6050_Data;
char str[120];
/* Initialize system */
SystemInit();
/* Initialize USART, PB6, PB7*/
TM_USART_Init(USART1, TM_USART_PinsPack_2, 57600);
/* Initialize MPU6050 sensor SCL: PA8, SDA: PC9 */
if (TM_MPU6050_Init(&MPU6050_Data, TM_MPU6050_Device_0, TM_MPU6050_Accelerometer_2G, TM_MPU6050_Gyroscope_2000s) != TM_MPU6050_Result_Ok) {
/* Display error to user */
TM_USART_Puts(USART1, "MPU6050 Error\n");
/* Infinite loop */
while (1);
}
while (1) {
sprintf(str,"Test");
TM_USART_Puts(USART1, str);
for(int i=0;i<8000000;i++); //delay
TM_MPU6050_ReadAll(&MPU6050_Data);
int i=MPU6050_Data.Accelerometer_X;
sprintf(str, "Acceleration X: %d",5); //Crash
TM_USART_Puts(USART1, str);
for(int i=0;i<8000000;i++); //delay
}
}