реклама на сайте
подробности

 
 
> Запись во FLASH, STM32F303VC
Jenya7
сообщение Jan 22 2018, 09:54
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Делаю так
CODE
void WriteFlash(void* src, void* dst, int len)
{
uint32_t timeout = 0;
uint16_t* srcw = (uint16_t*)src;
volatile uint16_t* dstw = (uint16_t*)dst;

FLASH->CR |= FLASH_CR_PG; /* Programm the flash */

while (len)
{
*dstw = *srcw;
while ((FLASH->SR & FLASH_SR_BSY) != 0)
{
timeout++;
if (timeout > 100000) break;
}
if (*dstw != *srcw )
{
goto EndPrg;
}
dstw++;
srcw++;
len = len - sizeof(uint16_t);
}

EndPrg:
FLASH->CR &= ~FLASH_CR_PG; /* Reset the flag back !!!! */
}

void WriteToFlash(uint32_t flash_page)
{
uint32_t *addr;
uint32_t size;

FLASH_Status status;

//flash unlock
if((FLASH->CR & FLASH_CR_LOCK) != RESET)
{
/* Authorize the FLASH Registers access */
FLASH->KEYR = FLASH_KEY1;
FLASH->KEYR = FLASH_KEY2;
}

status = FLASH_ErasePage(flash_page);

if (status == FLASH_COMPLETE)
{
addr = (uint32_t *)flash_page;
size = sizeof(MOTOR_SYS_PARAMS);
WriteFlash(&motor_sys_params, addr, size);
}

//flash lock
FLASH->CR |= FLASH_CR_LOCK;
}

На строчке while ((FLASH->SR & FLASH_SR_BSY) != 0) вылетает в HardFault_Handler.
Я этот код выдернул из старого проекта, он работал на том же STM32F3.

Сообщение отредактировал IgorKossak - Jan 22 2018, 20:22
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aleksandr Barano...
сообщение Jan 22 2018, 14:00
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



На всякий случай хочу напомнить:

Any attempt to read the Flash memory on STM32F4xx while it is being written or erased,
causes the bus to stall. Read operations are processed correctly once the program
operation has completed. This means that code or data fetches cannot be performed while
a write/erase operation is ongoing
.


--------------------
ASB
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Запись во FLASH   Jan 22 2018, 09:54
- - Сергей Борщ   QUOTE (Jenya7 @ Jan 22 2018, 11:54) Делаю...   Jan 22 2018, 10:33
|- - Jenya7   Цитата(Сергей Борщ @ Jan 22 2018, 15:33) ...   Jan 22 2018, 10:46
|- - Сергей Борщ   QUOTE (Jenya7 @ Jan 22 2018, 12:46) ничег...   Jan 22 2018, 12:44
- - AHTOXA   Цитата(Jenya7 @ Jan 22 2018, 14:54) Делаю...   Jan 22 2018, 12:53
|- - Jenya7   Цитата(AHTOXA @ Jan 22 2018, 17:53) Может...   Jan 22 2018, 13:30
|- - Сергей Борщ   QUOTE (Jenya7 @ Jan 22 2018, 15:30) да вр...   Jan 22 2018, 13:35
|- - Jenya7   Цитата(Сергей Борщ @ Jan 22 2018, 18:35) ...   Jan 22 2018, 13:40
|- - scifi   Цитата(Jenya7 @ Jan 22 2018, 16:40) так я...   Jan 22 2018, 13:43
|- - Jenya7   Цитата(scifi @ Jan 22 2018, 18:43) Вероят...   Jan 22 2018, 13:47
|- - scifi   Цитата(Jenya7 @ Jan 22 2018, 16:47) R1 = ...   Jan 22 2018, 13:48
|- - Jenya7   Цитата(scifi @ Jan 22 2018, 18:48) Это за...   Jan 22 2018, 13:54
|- - scifi   Цитата(Jenya7 @ Jan 22 2018, 16:54) R1 - ...   Jan 22 2018, 13:58
|- - Jenya7   Цитата(scifi @ Jan 22 2018, 18:58) Ну и? ...   Jan 22 2018, 14:02
|- - scifi   Цитата(Jenya7 @ Jan 22 2018, 17:02) 62-я....   Jan 22 2018, 14:07
|- - Jenya7   Цитата(scifi @ Jan 22 2018, 19:07) Конечн...   Jan 22 2018, 14:16
|- - scifi   Цитата(Jenya7 @ Jan 22 2018, 17:16) ой. ч...   Jan 22 2018, 14:21
|- - Jenya7   Цитата(scifi @ Jan 22 2018, 19:21) Мой ка...   Jan 22 2018, 14:25
- - scifi   Цитата(AHTOXA @ Jan 22 2018, 15:53) Может...   Jan 22 2018, 13:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 10:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016