Блокировка Cortex-M4

Я пытаюсь использовать DAPLink для поддержки микроконтроллера STM32L486, но обнаружил, что Cortex-M4 блокируется после сбоя алгоритма флеш-памяти и вызывает функцию инициализации флеш-памяти. Функция init очень проста, просто очистите флаги ошибок.

/*clear SR*/
FLASH_SR_REG = FLASH_SR_OPTVERR | FLASH_SR_RDERR | FLASH_SR_FASTERR
    | FLASH_SR_MISEERR | FLASH_SR_PGSERR | FLASH_SR_SIZEERR
    | FLASH_SR_PGAERR | FLASH_SR_WRPRTERR | FLASH_SR_PROGERR
    | FLASH_SR_WRPRTERR | FLASH_SR_EOP;

Я также обнаружил, что это произошло при остановке сброса. swd_read_word(DBG_HCSR, &tmp) получает 0x01090001, Он запирает и не останавливается.

// need halt MCU for read right data from Peripher address space when power on
// Enable debug and halt the core (DHCSR <- 0xA05F0003)
if (!swd_write_word(DBG_HCSR, DBGKEY | C_DEBUGEN | C_HALT)) {
    return 0;
}

// Enable halt on reset
//if (!swd_write_word(DBG_EMCR, VC_CORERESET)) {
//    return 0;
//}    

// Wait until core is halted
do {
    if (!swd_read_word(DBG_HCSR, &tmp)) {
        return 0;
    }
} while ((tmp & S_HALT) == 0);

// Disable halt on reset
//if (!swd_write_word(DBG_EMCR, 0)) {
//    return 0;
//}   

Моя плата - это плата STM32 Nucleo-64 (NUCLEO-L476RG). MCU - это STM32L476. Вспышка пуста.

Тот же код работает на STM32F405. Это также микроконтроллер Cortex-M4. Чем отличается STM32L4xx?

0 ответов

Другие вопросы по тегам