这是主程序的循环
while(1)
{
delay_ms(100);
LED0=!LED0;//提示系统正在运行
Config_RetrieveSettings();
}
1、Flash能正常读写,且正确,内存位置也对
2、
Config_RetrieveSettings();为Flash读写函数,无特殊操作,只是写入数据,然后在读出来,最后串口发送
问题:主循环中
Config_RetrieveSettings();删除后,系统完全正常运行。
主循环加入
Config_RetrieveSettings();,删除
delay_ms(100); 系统正常运行,读取,LED都正常
以上两个同是写入,第一遍LED正常延时,点亮,Flah读写打印出数据。第二遍循环,程序异常,死循环在
delay_ms(100);
图片红框内为死循环异常的地方,在执行第一遍之后,就一直停留在这里循环。
1
望大神能够解答。
ALIENTEK MINISTM32 实验26 FLASH模拟EEPROM实验.zip
(2.47 MB, 下载次数: 196)
2017-7-17 16:33 上传
点击文件名下载附件
1
如下,我在每次读写FLash后都重新初始化一次delay函数,{delay_init2()(不是delay_init()具体看下面代码)};,然后系统就正常运行了。
所以问题应该出在这里。
while(1)
{
delay_ms(100);
LED0=!LED0; //提示系统正在运行
Config_RetrieveSettings(); //读写flash,并串口打印
delay_init2(); //添加的重配置函数
}
这是每次的初始化代码,也就是时钟选择这里。但为什么Flash读写会影响delay的时钟配置呢?
void delay_init2()
{
fac_us=SystemCoreClock/8000000; //为系统时钟的1/8
fac_ms=(u16)fac_us*1000;//非ucos下,代表每个ms需要的systick时钟数
}
一周热门 更多>