0

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
  }
}
4

0 に答える 0