匠人有始有终,给大家一个交代
STM32匠人学习笔记
一、关于万利板的程序下载问题
1、问题
打着雨伞请教,关于万利板的程序下载问题
先说一下匠人的经历。
第一次,下载LCDDemo.eww到板上,在线运行正常,脱离ST-link后单独用USB供电,也正常。这应该视为程序被正常下载到芯片了吧。这没问题,从略。
第二次,换了一个ADC 的演示程序,编译、debug,照样出现下载对话框,完成后点击go,运行,也正常,LCD 屏幕上现实ADC结果。到这为止都还算正常。接着,匠人点击Stop Debugging按钮,停止调试。并退出IAR,并切换到USB(CN5接口)供电,同时也把CN2短路帽切换到USB。这时,发现LCD显示的居然不是ADC结果,而是第一次灌入的那个程序的内容“stm32 lcd demo”。
反复进行第二次的动作,结果都是如此,即不管仿真时选择了哪个演示程序,调试时运行正确,一旦脱离仿真状态,改用USB供电,运行的就是“stm32 lcd demo”。
why?
2、原因
两个DEMO程序的区别在于,第一个DEMO设置为在FLASH_ROM中运行,而第二个DEMO设置为在RAM里运行,因此,重新上电后就丢失了。
3、解决
必须把设置更改为在FLASH_ROM中运行,步骤如下:
1、 在workspace窗口下面,选择BOOT_FLASH,如下图:图 1.1:设置BOOT_FLASH
2、 鼠标右击项目,打开Options窗口,选择Linker的Config标签,把原来设置的“lnkarm_ram.scl”文件修改为“ linkarm_flash.xcl”。如下图:图 1.2:设置lnkarm_RAM.xcl文件
备注:
如果在Flash中调试程序,设置lnkarm_flash.xcl;
如果在RAM中调试程序,设置lnkarm_RAM.xcl;
在进行设置时,要确认电路板上的Boot0 和Boot1引脚的跳线连接是否正确。
STM32固件库中有“lnkarm_ram.scl”和 “ linkarm_flash.xcl”的工程模板。
3、 重新下载程序,并改用USB口供电后验证,问题解决。4、启发
对于用过RAM的人来说,这可能不是问题。但是对于象匠人这种从单片机转学RAM的人来说,应该建立这个概念,就是,程序不仅仅可以在FALSH中运行,而且可以在RAM中运行。所以,如果仅仅把程序下载到RAM中,那一掉电,自然就丢死了程序。
不怕做不到,就怕想不到啊!