Цитата(topkin @ Mar 31 2015, 14:46)

Ничего тогда не понимаю из вашей программы. Получается у вас на всех этих ножках висят прерывания/события? По хорошему акселерометр вешается на SPI/I2C интерфейс, в данном случае конфигурироваться ножки должны как альтернативные функции. Может тут программно реализовано?
Смотрите, если в поле структуры:
GPIO_InitStruct.Mode = GPIO_MODE_EVT_xx/GPIO_MODE_IT_xxx - скорее всего настраивается внешнее прерывание или событие
GPIO_InitStruct.Mode = GPIO_MODE_AF - аналоговый режим работы порта
GPIO_InitStruct.Mode = GPIO_MODE_INPUT/GPIO_MODE_OUTPUT - режим на вход или выход
Как раз в данных полях куб не должен портить код из функции main. Проверьте в свойствах проекта - Project - Project Settings - Code Generator - "Keep User Code when re-generting"
Если она стоит, то Куб не будет портить код в комментариях, как вы привели. У вас скорее всего не стоит галка
Галка стоит!
Так выглядит код до ре-генерации:
CODE
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOG, (GPIO_PIN_10 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_12), GPIO_PIN_SET);
if(retSD == 0)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, GPIO_PIN_RESET);
if(f_mount(&SDFatFs, (TCHAR const*)SD_Path, 0) != FR_OK)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
if(f_mkfs((TCHAR const*)SD_Path, 0, 0) != FR_OK)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
if(f_open(&MyFile, "Hello.txt", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);
if((byteswritten == 0) || (res != FR_OK))
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
f_close(&MyFile);
if(f_open(&MyFile, "Hello.txt", FA_READ) != FR_OK)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
res = f_read(&MyFile, rtext, sizeof(wtext), &bytesread);
if((strcmp(rtext, wtext) !=0) || (res != FR_OK))
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
}else{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6, GPIO_PIN_RESET);
f_close(&MyFile);
}
}
}
}
}
}
}
FATFS_UnLinkDriver(SD_Path);
while(1);
}
/* USER CODE END 3 */
А так после ре-генерации:
CODE
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOG, (GPIO_PIN_10 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_12), GPIO_PIN_SET);
if(retSD == 0)
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, GPIO_PIN_RESET);
if(f_mount(&SDFatFs, (TCHAR const*)SD_Path, 0) != FR_OK)
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
if(f_mkfs((TCHAR const*)SD_Path, 0, 0) != FR_OK)
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
if(f_open(&MyFile, "Hello.txt", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);
if((byteswritten == 0) || (res != FR_OK))
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
f_close(&MyFile);
if(f_open(&MyFile, "Hello.txt", FA_READ) != FR_OK)
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
res = f_read(&MyFile, rtext, sizeof(wtext), &bytesread);
if((strcmp(rtext, wtext) !=0) || (res != FR_OK))
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_10, GPIO_PIN_RESET);
while(1);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6, GPIO_PIN_RESET);
f_close(&MyFile);
}
}
}
}
}
}
}
FATFS_UnLinkDriver(SD_Path);
while(1);
}
/* USER CODE END 3 */