STM32F042G6 не перейдет в загрузчик - PullRequest
0 голосов
/ 29 марта 2020

У меня есть фрагмент кода, который должен перевести плату в режим загрузчика, когда он включен с нажатой кнопкой (не на загрузочных штырях).

blah blah
int main(void)
{

    delay(1000);


#ifdef ENABLE_OVERCLOCK
clk_init();
#endif

#if defined(RX_SBUS_DSMX_BAYANG_SWITCH)
    switch_key();
    if(KEY ==0)
    {
            unsigned long time=0;
            while(KEY == 0)
            {
                if (time > 4000000)
                {//reboot to dfu if the key is continiously held on poweron
                    __enable_irq();
                    RCC_DeInit();
                    SysTick->CTRL = SysTick->LOAD = SysTick->VAL = 0;
                    SYSCFG->CFGR1 = 0x01;
                    const uint32_t p = (*((uint32_t *) 0x1FFFC400));
                    __set_MSP(p);
                    void (*SysMemBootJump)(void);
                    SysMemBootJump = (void (*)(void)) (*((uint32_t *) 0x1FFFC404));
                    SysMemBootJump();
                    while(1);
                }
                ++time;
            }
blah blah

... и так далее. Однако u C зависает и не обнаруживается с помощью usb при запуске этого кода. Что я делаю не так?

1 Ответ

0 голосов
/ 30 марта 2020

Опциональный байт BOOT_SEL должен быть установлен в 0 на STM32F042, в противном случае он не позволит перейти к загрузчику. Будьте осторожны, этот параметр не позволяет загрузчику загрузиться с контакта boot0.

...