使用stm32L152系列整体功能正常,不加入读保护的时候LED1,正常运行,当加入读保护后,程序下进去,关机开机后,LED1,不亮,程序供电没有问题,发现程序根本就不执行了,感觉单片机锁死了。 研究好几天了,希望大家帮忙看看吧。代码如下 void Flash_RProt_ENABLE(void) { u8 status; FLASH_Unlock();//解锁FLASH FLASH_OB_Unlock();//解锁选项字 FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR); status=FLASH_OB_GetRDP(); if(status==0) { FLASH_OB_RDPConfig(OB_RDP_Level_1);//Read protection of the memory FLASH_OB_Lock(); FLASH_Lock(); } } int main(void) { Flash_RProt_ENABLE(); Main_Init();//时钟初始化,IO口初始化 while(1) {LED1_OPEN() } } |
STM32L151RDT6 SDIO读写SD卡 FIFO下溢错误,不知是什么原因
STM32L152 RTC唤醒STOP mode问题
STM32L152系列自带LCD驱动段码液晶屏,怎么驱动想要亮的段亮
STM32L151为何FLASH擦除后全是是0x00?
求助!!STM32L151中的RTC唤醒(wake up)中断问题
STM32L152普通I/O模拟SPI驱动W25Q16问题
STM32L152开发板原理图及说明文档
STM32L1系列,如何释放PA15为普通GPIO端口
STM32L151读取W25Q16的ID错误,请帮忙看看是什么原因
STM32L151 STOP模式唤醒程序跑哪儿了
按照你说的修改程序,程序如下:
void Flash_RProt_ENABLE(void)
{
u8 status;
// FLASH_Unlock();//解锁FLASH
FLASH_OB_Unlock();//解锁选项字
UART1_SENDDATA(0x02);
FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR);
UART1_SENDDATA(0x03);
status=FLASH_OB_GetRDP();
UART1_SENDDATA(0x04);
if(status==0)
{
FLASH_OB_RDPConfig(OB_RDP_Level_1);//Read protection of the memory
UART1_SENDDATA(0x05);
FLASH_OB_Lock();
UART1_SENDDATA(0x06);
//FLASH_Lock();
}
}
int main(void)
{
Main_Init();
UART1_SENDDATA(0x01);
Flash_RProt_ENABLE();
while(1)
{
}
}
程序下进去后,不断电,串口接到01 02 03 04 05 06 正常显示。
断电后,串口接收不到任何数据,我感觉是读保护起作用后,是不是起始的堆栈发生改变了,找不到如何堆栈了。我用的是IAR软件
程序下进去后,如果不断电程序运行正常,但是一断电程序就运行不了了,也不能仿真了,得用软件将程序的FLASH读保护擦除,才可以继续仿真下载程序
测试过了,没有进入HardFault_Handler等中断,给我的感觉就是压根就没有进入程序,不知道堆栈指哪里去了
我用J-FLASH-ARM软件加入读保护,遇到的问题是一样的,下进去后在一开机程序运行不了了。
检查过了,没有进入HardFault_Handler等中断,读保护下进去后堆栈不知道去哪里了,0xAAAAAAAA?是哪里
这个是自己写的吗?