У меня есть фрагмент кода, который должен перевести плату в режим загрузчика, когда он включен с нажатой кнопкой (не на загрузочных штырях).
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 при запуске этого кода. Что я делаю не так?