STM32f4. Запись в flash.

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
Post Reply
Rogers
Posts: 13
Joined: 30 Sep 2013, 21:37
Location: МО, Климовск

STM32f4. Запись в flash.

Post by Rogers »

Приветствую! Дана задачка: занести в определенную ячейку flash памяти, определенное значение. Вроде все просто, но у меня не работает или я неправильно понимаю как это записать. Подскажите, что я делаю не так.

Code: Select all

#include "stm32f4xx.h"
#include "stm32f4xx_flash.h"

#define DEVICE_ADDRESS 0x08008010
#define DEVICE_SECTOR FLASH_Sector_2

//void WriteDeviceAddress(char* data)
void WriteDeviceAddress(void)
{
	FLASH_Unlock();
	FLASH_EraseSector(FLASH_Sector_2,VoltageRange_3);
	FLASH_ProgramHalfWord(0x08008010,0x5555);
	FLASH_Lock();
}

int main (void)
{
	while(1);
}
Rogers
Posts: 13
Joined: 30 Sep 2013, 21:37
Location: МО, Климовск

Re: STM32f4. Запись в flash.

Post by Rogers »

Попробовал с другим типом данных и чуть-чуть поправил код => заработало.

Code: Select all

#include "stm32f4xx.h"
#include "stm32f4xx_flash.h"

#define DEVICE_ADDRESS 0x08008010
#define DEVICE_SECTOR FLASH_Sector_2

//void WriteDeviceAddress(char* data)
void WriteDeviceAddress(void)
{
   FLASH_Unlock();
   FLASH_EraseSector(FLASH_Sector_2,VoltageRange_3);
   FLASH_ProgramWord(DEVICE_ADDRESS,0xAAAA8855);
   FLASH_Lock();
}

int main (void)
{		WriteDeviceAddress();
   while(1);
}
Чтение (путем наведения на переменную i):

Code: Select all

#define DEVICE_ADDRESS 0x08008010
#define DEVICE_SECTOR FLASH_Sector_2
#define ADDRESS	0x08008010


uint32_t Read_Flash(uint32_t Data_adr)
{
	return *(uint32_t*) Data_adr;

}
/*
void WriteDeviceAddress(void)
{
   FLASH_Unlock();
   FLASH_EraseSector(FLASH_Sector_2,VoltageRange_3);
   FLASH_ProgramWord(DEVICE_ADDRESS,0xAAAA8855);
   FLASH_Lock();
}*/

int main (void)
{		
	uint32_t i=0;
	//WriteDeviceAddress();
	i = Read_Flash(ADDRESS);
		
   while(1)
	 {i++;}
	    }
Post Reply