From 29081c50488050bf5d5b448335e38ed69792dd21 Mon Sep 17 00:00:00 2001 From: EMSR Date: Wed, 26 Apr 2023 21:33:55 +0800 Subject: [PATCH] disable more irqs to fix am32 flash errors (#51) * disable more irqs to fix am23 flash errors * fix spell errors and comment --- src/main/io/serial_4way_avrootloader.c | 33 +++++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/io/serial_4way_avrootloader.c b/src/main/io/serial_4way_avrootloader.c index 513c2538d..788a94571 100644 --- a/src/main/io/serial_4way_avrootloader.c +++ b/src/main/io/serial_4way_avrootloader.c @@ -164,11 +164,19 @@ static uint8_t BL_ReadBuf(uint8_t *pstring, uint8_t len) * 后继处理: 测试通过后,尝试atomic_block(nvic_prio_max) 方式 */ #if defined(AT32F43x) - ATOMIC_BLOCK(NVIC_PRIO_MAX){ - //disable exint - ExIntReg=EXINT->inten; - EXINT->inten=0;//DISABLE ALL EXINT - } + //disable exint + ExIntReg=EXINT->inten; + EXINT->inten=0;//DISABLE ALL EXINT + //disable 5-15 EXINT + NVIC_DisableIRQ(EXINT9_5_IRQn); + NVIC_DisableIRQ(EXINT15_10_IRQn); + //disable USB + NVIC_DisableIRQ(TMR20_OVF_IRQn); + NVIC_DisableIRQ(OTGFS1_IRQn); + //disable uart 1\2\3 + NVIC_DisableIRQ(USART1_IRQn); + NVIC_DisableIRQ(USART2_IRQn); + NVIC_DisableIRQ(USART3_IRQn); #endif do { if (!suart_getc_(pstring)) goto timeout; @@ -190,10 +198,17 @@ static uint8_t BL_ReadBuf(uint8_t *pstring, uint8_t len) } timeout: #if defined(AT32F43x) - ATOMIC_BLOCK(NVIC_PRIO_MAX){ - //re-enable exint - EXINT->inten=ExIntReg; - } + //re-enable exint + EXINT->inten=ExIntReg; + NVIC_EnableIRQ(EXINT9_5_IRQn); + NVIC_EnableIRQ(EXINT15_10_IRQn); + //re-enable USB + NVIC_EnableIRQ(TMR20_OVF_IRQn);//TODO:tmr20 should be removed after + NVIC_EnableIRQ(OTGFS1_IRQn); + //re-enable uart 1\2\3 + NVIC_EnableIRQ(USART1_IRQn); + NVIC_EnableIRQ(USART2_IRQn); + NVIC_EnableIRQ(USART3_IRQn); #endif return (LastACK == brSUCCESS); }