12.07.2023, 19:00
|
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
j-Roger
там нет драйверов
Последний раз редактировалось mike-y-k; 12.07.2023 в 23:14.
Причина: 7.15
|
|
|
|
14.07.2023, 00:29
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 727
Сказал спасибо: 363
Сказали Спасибо 803 раз(а) в 377 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Dtolok
Если речь о CMSIS, то в каталоге Drivers/CMSIS/Device/ST/STM32G4xx/Include находятся именно файлы "Device Peripheral Access Layer Header" с определениями регистров периферии, в том числе для чипа G431. Кстати, по ссылке eddy - точно такой же каталог заголовочных файлов для G4xx.
Если же под драйверами подразумевается HAL, то Drivers/STM32G4xx_HAL_Driver - это, видимо, оно
Последний раз редактировалось mike-y-k; 14.07.2023 в 12:44.
Причина: 7.15
|
|
|
|
07.01.2024, 23:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А не сталкивался ли кто с такой проблемой: опробованный на многих МК код для работы с флеш-памятью на "китайском" STM32F303 приводит к непонятному зависанию во время стирания страниц. Одну-две стирает, а потом - все. В отладчике, поставил break на функцию стирания - все свободные страницы стерлись без проблем. А без брейка зависает, зараза! Причем, утилита st-flash спокойно все стирает и не ругается, а то я уж было подумал, что там вместо 128кБ флеша только 64…
Очень странное поведение.
Функция стирания страницы:
Код:
|
static int erase_pageN(int N){
int ret = 0;
FLASH-›AR = (uint32_t)Flash_Data + N*FLASH_blocksize;
FLASH-›CR |= FLASH_CR_STRT;
uint32_t xx = 100000;
while((FLASH-›SR & FLASH_SR_BSY) && --xx) IWDG-›KR = IWDG_REFRESH;
if(xx == 0) return 1;
FLASH-›SR = FLASH_SR_EOP;
if(FLASH-›SR & FLASH_SR_WRPERR){ /* Check Write protection error */
ret = 1;
FLASH-›SR = FLASH_SR_WRPERR; /* Clear the flag by software by writing it at 1*/
}
return ret;
} |
Функция стирания хранилища:
Код:
|
int erase_storage(int npage){
int ret = 0;
uint32_t end = 1, start = 0, flsz = 0;
if(FLASH_SIZE › 0 && FLASH_SIZE ‹ 20000){
flsz = FLASH_SIZE * 1024; // size in bytes
flsz -= (uint32_t)Flash_Data - FLASH_BASE;
}
DBG("total free blocks: "); printu(flsz / FLASH_blocksize);
end = flsz / FLASH_blocksize;
if(end == 0) return 1;
if(npage › -1){ // erase only one page
if((uint32_t)npage ›= end) return 1;
start = npage;
end = start + 1;
}
if((FLASH-›CR & FLASH_CR_LOCK) != 0){
FLASH-›KEYR = FLASH_KEY1;
FLASH-›KEYR = FLASH_KEY2;
}
while(FLASH-›SR & FLASH_SR_BSY) IWDG-›KR = IWDG_REFRESH;
FLASH-›SR = FLASH_SR_EOP | FLASH_SR_PGERR | FLASH_SR_WRPERR;
FLASH-›CR |= FLASH_CR_PER;
__disable_irq();
for(uint32_t i = start; i ‹ end; ++i){
if(erase_pageN(i)){
ret = 1;
break;
}
}
__enable_irq();
FLASH-›CR &= ~FLASH_CR_PER;
return ret;
} |
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
08.01.2024, 00:05
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 727
Сказал спасибо: 363
Сказали Спасибо 803 раз(а) в 377 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
ЕМНИП "при зависании" под отладкой обычно первым делом в отладчике жмем на паузу и сразу видим, где "зависли", и можно посмотреть все регистры МК вплоть до самого незначащего бита )
|
|
|
|
08.01.2024, 00:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
j-Roger, в том-то и проблема, что под отладкой не зависает! Память стирается нормально. Даже просто брейки не ставлю - все штатно проходит.
А как только без отладчика запускаю - зависон…
Обнаружил, что у меня нога Rx USART'а висела в воздухе и периодически шум в прерывания загонял МК. ХЗ, как это связано с моей проблемой, но подтяжка Rx к плюсу вроде бы избавила от проблемы. А может и появится снова…
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 08.01.2024 в 00:43.
|
|
|
|
08.01.2024, 11:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,363
Сказал спасибо: 85
Сказали Спасибо 621 раз(а) в 376 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Ну так надо все прерывания запрещать на время стирания-записи флэша.
Иначе может возникнуть HardFault.
Ну или переопределить вектора прерываний в RAM или в правильную страницу флэша.
|
|
|
|
19.01.2024, 17:34
|
|
Частый гость
Регистрация: 30.05.2009
Сообщений: 25
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
В папке с IARом в ProgrammFiles аж две библиотеки STL, но ни одну не могу заставить работать. Буквально "class" undefined и т.п., т.е. CPP вообще не компилируется, хотя auto выбор с/cpp выставлен и все известные мне варианты расширений файлов перепробованы. Помогите новичку советом.
__________________
"При отрыве шестой ноги таракан теряет слух"
|
|
|
|
19.01.2024, 17:45
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Проверьте версию стандарта языка в настройках компиляции. Укажите версию не ниже С++14. Потому как многие плюшки стандартной библиотеки шаблонов появились в поздних версиях стандарта. С++17, С++20.
Ну и проверьте подключения в файл необходимых файлов (#include ‹›), которые требуются для конкретных инструментов
|
|
|
|
19.01.2024, 19:50
|
|
Частый гость
Регистрация: 30.05.2009
Сообщений: 25
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
Проверьте версию стандарта языка в настройках компиляции. Укажите версию не ниже С++14. Потому как многие плюшки стандартной библиотеки шаблонов появились в поздних версиях стандарта. С++17, С++20.
Ну и проверьте подключения в файл необходимых файлов (#include ‹›), которые требуются для конкретных инструментов
|
Спасибо. Огромное. Я сам не догадался, что нужно новый проект создать на том же workspace. Невероятно, но первого раза скомпилировалось,
__________________
"При отрыве шестой ноги таракан теряет слух"
Последний раз редактировалось ankirus; 20.01.2024 в 06:26.
|
|
|
|
20.01.2024, 10:59
|
|
Частый гость
Регистрация: 30.05.2009
Сообщений: 25
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
Получается смешно. IAR STL вместе с пользовательским кодом компилируется (кусок, где с++ , но без файлов конфигурации контроллера), и IAR CUBEMX с необходимой конфигурацией и так же с пользовательским кодом - тоже компилируется (без куска с с++). По отдельности. Соединить их вместе - непонятно, как. Кто-нибудь подскажет, как подключить куб к с++, либо с++ к проекту куба, чтобы вместе работали. Какова процедура? Подключать вручную 509 файлов из проекта куба к проекту библиотеки? Может есть менее идиотские варианты? https://kazus.ru/forums/images/smilies/icon_obstenu.gif
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:10.
|
|