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();
}
}
请大神们支援 抱歉,首先你得注意了,有一句别忽略了,就是在flash中,若你写的ROM区域,该内存数值非FF时,会报硬件错误。所以,你的代码操作实在过于不严谨。操作flash是一次一个section,并且在操作时应先erase,再写入。 EEPROM写数据是像你这么写的? yklstudent-1794 发表于 2020-4-1 16:49
EEPROM写数据是像你这么写的?
没问题吧 pxforever 发表于 2020-4-1 15:11
抱歉,首先你得注意了,有一句别忽略了,就是在flash中,若你写的ROM区域,该内存数值非FF时,会报硬件错误 ...
我写的地址是EEPROM 可以看到,在写入eerom前,至少做状态检测才写入的。 大神们,麻烦支援一下,感激不尽 pxforever 发表于 2020-4-1 18:27
可以看到,在写入eerom前,至少做状态检测才写入的。
谢谢大神! 可以了?
页:
[1]
2