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(); } } |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L031无法进入boot
用MDK5.12仿真STM32L011D3,怎么没法子看内部寄存器?
评分
查看全部评分
没问题吧
我写的地址是EEPROM
评分
查看全部评分
谢谢大神!
/* 芯片内部EEPROM地址数据写操作 */
bool sST_EEPROM_WriteBytes(uint16_t addr, uint8_t *buffer, uint16_t length)
{
bool result = true;
uint8_t *address;
if( (addr + length) > ST_EEPROM_BYTE_SIZE)
{
return false;
}
address = (uint8_t *)(ST_EEPROM_BASE_ADDR + addr);
DIS_INT();
/* unlock */
FLASH->PEKEYR = FLASH_PEKEY1;
FLASH->PEKEYR = FLASH_PEKEY2;
while(FLASH->PECR & FLASH_PECR_PELOCK);
for(; length > 0; length--)
{
*address++ = *buffer++;
while(FLASH->SR & FLASH_SR_BSY);
}
/* lock */
FLASH->PECR |= FLASH_PECR_PELOCK;
EN_INT();
return result;
}
你试试这样的
评分
查看全部评分
可以了