fufufuchi 发表于 2020-3-31 16:37:22

STM32L072RB写Bank2 EEPROM不响应中断

STM32L072RB有两个BANK,
按参考手册的说法,在对一个Bank进行擦写的时候不会影响到另一个Bank的写。

也就是说可以在写Bank2的EEPROM时可以响应中断(中断服务函数等都是放在Bank1的Flash中),对吗?
http://www.eemaker.com/stm32l0-eeprom-nvm.html这份帖子也是这么认为的。
但是我实际测试的时候发现写Bank2的EEPROM,串口RX中断会使MCU死机。
Why?????
int main(void)
{
uint32_t primask_bit;
        uint32_t i;
        uint32_t *wAddr;
/* Configure the system clock to 16 MHz */
SystemClock_Config();

/* Initialize LED2 */
LED_Init();

/* Set LED2 Off */
LED_Off();

/* Initialize button in EXTI mode */
UserButton_Init();

/* Configure USARTx (USART IP configuration and related GPIO initialization) */
Configure_USART();
               
        primask_bit = __get_PRIMASK();
__disable_irq();
        FLASH->PEKEYR = FLASH_PEKEY1;
FLASH->PEKEYR = FLASH_PEKEY2;
__set_PRIMASK(primask_bit);
               
/* Infinite loop */
while (1)
{
                wAddr=(uint32_t *)(DATA_EEPROM_BANK2_BASE);
                LL_mDelay(1000);
                LED_On();
                for(i=0;i<100;i++)
                {               
                        *wAddr++=0x99887766;
                }
                LED_Off();
}
}

fufufuchi 发表于 2020-4-1 11:34:11

请大神们支援

pxforever 发表于 2020-4-1 15:11:00

抱歉,首先你得注意了,有一句别忽略了,就是在flash中,若你写的ROM区域,该内存数值非FF时,会报硬件错误。所以,你的代码操作实在过于不严谨。操作flash是一次一个section,并且在操作时应先erase,再写入。

yklstudent-1794 发表于 2020-4-1 16:49:12

EEPROM写数据是像你这么写的?

fufufuchi 发表于 2020-4-1 17:28:19

yklstudent-1794 发表于 2020-4-1 16:49
EEPROM写数据是像你这么写的?

没问题吧

fufufuchi 发表于 2020-4-1 17:35:45

pxforever 发表于 2020-4-1 15:11
抱歉,首先你得注意了,有一句别忽略了,就是在flash中,若你写的ROM区域,该内存数值非FF时,会报硬件错误 ...

我写的地址是EEPROM

pxforever 发表于 2020-4-1 18:27:23

可以看到,在写入eerom前,至少做状态检测才写入的。

fufufuchi 发表于 2020-4-2 08:44:47

大神们,麻烦支援一下,感激不尽

fufufuchi 发表于 2020-4-2 14:11:50

pxforever 发表于 2020-4-1 18:27
可以看到,在写入eerom前,至少做状态检测才写入的。

谢谢大神!

pxforever 发表于 2020-4-2 20:23:18

可以了?
页: [1] 2
查看完整版本: STM32L072RB写Bank2 EEPROM不响应中断