|
Запись во FLASH, STM32F303VC |
|
|
|
Jan 22 2018, 09:54
|
Профессионал
    
Группа: Участник
Сообщений: 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] - для короткого!
|
|
|
|
|
 |
Ответов
|
Jan 22 2018, 12:53
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Jenya7 @ Jan 22 2018, 14:54)  Делаю так Код 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; } Может, src или dst не выровнены на 2 байта?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 22 2018, 13:30
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(AHTOXA @ Jan 22 2018, 17:53)  Может, src или dst не выровнены на 2 байта? да вроде работало в прошлом проекте. Цитата(Сергей Борщ @ Jan 22 2018, 17:44)  Вы предлагаете мне телепатически определить ассемблерную команду и содержимое регистров ядра, приводящие к исключению? В любом случае, чудес не бывает. То, что оболочка показывает вам на какую-то строчку в исходнике на языке высокого уровня, вовсе не означает, что в этот момент исполняется ассемблерная команда, относящаяся именно к этой строчке. Оптимизация, однако. вот дизасембли извиняюсь не то. вот до и после строчки
Сообщение отредактировал Jenya7 - Jan 22 2018, 13:35
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
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  Сергей Борщ 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 Aleksandr Baranov На всякий случай хочу напомнить:
Any attempt to r... Jan 22 2018, 14:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|