Сразу после последней строчки данного куска кода
IWDG->KR = IWDG_WRITE_ACCESS;
IWDG->KR = IWDG_START;
IWDG->PR = IWDG_PR_PR_1;//вот тут
в контроллере stm32f0x2 начинает шалить openocd.
Выражается это в том что теперь не работает переход к следующей строке, могу ли я считывать при этом регистры понять не смог.
При этом паузы и бряки работают.
Чем лечить куда копать?
Конфиг openocd.cfg
прилагается.
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f0x.cfg]
reset_config srst_nogate
Программатор stlink-v2
, среда vscode+cortexdebug
, система debian 11
, армовский тулчейн arm-none-eabi
из реп версии 8.3.1, отладчик gdb-multiarch
.
Модель точнее предпочёл бы не говорить, и подозреваю что повторяется и вообще на всех мкк где есть сий модуль.
openocd
видимо был ни причём, проблема оказалась в том что IWDG
постоянно перезапускал контроллер. По этому его надо было останавливать на время пока программа на паузе.
В данном случае вставляем
RCC -> APB2ENR |= RCC_APB2ENR_DBGMCUEN;
DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_IWDG_STOP;
перед запуском IWDG
.