两三点雨山前
获得 9 次赞
帮助过40人
通过查手册发现stm32 flash的烧写次数比较低,有的是1k,有的是10k,尤其是新手烧录的次数比较多,可能用不了多少时间就会把stm32烧坏,低端的10元以下还可接受,但像f4这种高端的价格比较贵的就很可惜了,因此解决这个问题就显得很迫切。 通过查网上的教程发现各种版本都有,但普遍是f1的,对f0,f4等系列的不多,因此研究出f0,f4等系列的就非常必要了,自己也研究了几天,现在总结出来奉献给大家。 1.mdk我用的是keil uvision5,先打开魔术棒工具,选择里面的target,像我用的f0系列的有16k的sram,打算用一半用作程序存储,另一半用于ram,我的配置如下: 点确认后设置完成。 2.然后再点开debug选项卡,点st-link debugger的settings按钮,进入里面配置: 3.点开后选择flash download按钮配置,首先配置ram for algorithm,配置如图所示: 4.然后单击stm32f0xx 128kb flash 在下面的 :art:里配置如下: 5.选中do not erase,不选中的话在ram中调试的时候仍然会擦除flash,可能仍然影响flash的寿命: 6.点确定后配置完成,然后需要的是ram里的启动文件,网上有很多,其实我们可以在keil里的安装文件里找到,在keil的安装文件里搜索dbg_ram.ini,搜到后复制出来待用; 7.debug模式下选择st-link debugger下导入dbg_ram.ini: 注意dbg_ram.ini里的 load %l incremental // load the application 是你生成的axf文件的路径,不设置也可以用,比如我的设置是:load c:usersstm32desktopg.axf incremental 8.导入成功后,调用debug,试验发现程序已经是在0x20000000的起始位置开始下载程序了; 9.为了验证是否真的是在ram下载程序,写了两
继续用stm32cube生成工程文件,生成工程文件后在中断函数里写按键控制程序。 重点用到了switch()函数,控制频率,函数如下: 由于不能贴代码,详情见附件: