Цитата(stm32f4 @ Jul 8 2013, 07:53)

Всем доброго дня)Программеры подскажите, что я не так делаю при записи во FLASH(STM32F4) ?
Вы не до конча прочитали документацию, хотя информация присутствует и в "stm32f4xx_flash.h" перед функцией FLASH_EraseSector:
Код
/**
* @brief Erases a specified FLASH Sector.
*
* @param FLASH_Sector: The Sector number to be erased.
* This parameter can be a value between FLASH_Sector_0 and FLASH_Sector_11
*
* @param VoltageRange: The device voltage range which defines the erase parallelism.
* This parameter can be one of the following values:
* @arg VoltageRange_1: when the device voltage range is 1.8V to 2.1V,
* the operation will be done by byte (8-bit)
* @arg VoltageRange_2: when the device voltage range is 2.1V to 2.7V,
* the operation will be done by half word (16-bit)
* @arg VoltageRange_3: when the device voltage range is 2.7V to 3.6V,
* the operation will be done by word (32-bit)
* @arg VoltageRange_4: when the device voltage range is 2.7V to 3.6V + External Vpp,
* the operation will be done by double word (64-bit)
*
* @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM,
* FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.
*/
FLASH_Status FLASH_EraseSector(uint32_t FLASH_Sector, uint8_t VoltageRange)
А у Вас:
Цитата
Я уже и с библиотеками и просто на CMSIS пробовал-толку нет((((((((((((
С использованием "stm32f4xx_flash.h" :
Код
FLASH_Unlock();
FLASH_EraseSector(FLASH_Sector_2,VoltageRange_4);
while ((FLASH->SR & FLASH_SR_BSY) != 0 );
FLASH_ProgramHalfWord(0x08008000,4);
FLASH_Lock();
А Вы внешнее напряжение програмирования подали, раз используете VoltageRange_4 ?
И даже если подали - использовани VoltageRange_4 предполагает запись двойными словами (64 бита), т.е. FLASH_ProgramDoubleWord а у Вас стоит FLASH_ProgramHalfWord - поэтому Вам надо использовать VoltageRange_2.
И while ((FLASH->SR & FLASH_SR_BSY) != 0 ); вызывать не нужно, просто:
Код
FLASH_Unlock();
FLASH_EraseSector(FLASH_Sector_2,VoltageRange_2);
FLASH_ProgramHalfWord(0x08008000,4);
FLASH_Lock();