关于keil程序无法进入main函数问题
情况:之前烧写没问题,不然再次烧写的稍后显示boot损坏。
原因:
最后发现是函数写的问题
如果len改成buff_len,那么bootloader就显示ERR。纳闷,那确实是代码逻辑影响了bootloader,我寻思不应该是相互独立的。
因为我用了fatfs文件系统,改了底层之后导致fatfs open文件一直失败,可能失败太多fatfs有自己的操作去改变中断向量表,导致进不去main函数。所以上层代码运行的时候,不要轻易动底层代码,除非确信自己写的不影响上层逻辑
解决方法
1.把单片机的芯片上的数据全擦了(bootloader+代码数据)
然后勾选下面这两个框
3.编译完烧写在单片机上,这一步相当于冲掉了bootloader,只下载了程序进入单片机的flash
4.J-link烧写bootloader
不会烧写bootloader的看这个
烧写bootloader
到此,bootloader和代码都烧写好了,把擦除全片改为擦除扇区(否则再次烧写会把bootloader冲掉)
最后
断点都取消掉,编译下载进去。成功!
上面这么多其实就是想全擦然后分别写入程序和bootloader进单片机flash。断点也会影响编译。还有如果用重定向函数fputc,一定要勾选micro lib,否则也会导致进不去main函数
作者:王光环