1.解压3in1_stm32.rar。 2.安装DfuSe_Demo_V2.2.1_Setup.exe。 3.打开G:\3in1_stm32\STM32_USB-DfuFs-Device_Upgrade\Project\usb_Device_Firmware_Upgrade\RVMDK\dfu.uv2 编译程序,用stlink将程序下载到3合1的STM32中。 4.选择STM32小板部分usb供电,用usb线连接STM32板,出现发现新硬件。 5.安装驱动,如果第二步默认安装的话,选择驱动C:\Program Files\STMicroelectronics\DfuSe\Driver\stdfu.inf 6.打开gpio工程,编译选项设置device 选择stm32f103c8 target 在IROM1 start处设置0x8003000 output 钩上create HEX File ok 设置好编译。 7.打开C:\Program Files\STMicroelectronics\DfuSe\BIN\dfufilemgr.exe 选择 I want to generate a dfu file from s19 ,hex or bin ok 选择s19 or hex 选择gpio工程生成的gpio.hex 点击generate 保存为gpio.dfu 8.打开C:\Program Files\STMicroelectronics\DfuSe\BIN\dfusedemo.exe 按下那个板子上自带方向按钮,重新加电,如果驱动安装正确,会显示stm device in dfu mode 然后点击右下脚的choose,选择刚才生成的gpio.dfu 点击upgrade ok 固件烧写成功。(注意:加电前请务必先按下那个板子上自带方向按钮,按下此按钮表示执行IAP应用程序,否则执行用户程序) 9.点击左上角的leave dfu mode,ok 是不是发现小板上的几个led灯在闪烁了。 10.呵呵,到此结束。 stm32内部有两个flash区域,一个是system flash,用于存放iap代码,该区域不对用户开放。一个是user flash,这个部分供用户使用。而system flash块固化了uart iap,这里的iap程序是用了部分user flash。所以IAP程序中有个判定,这里我用了3合1板上的那个joystick按钮,按下去的时候执行IAP程序,不按的话,程序跳转到0x8003000处执行。所以可以直接用3合1板子上的usb口直接下载程序到user flash的0x8003000以后的flash空间. 今天晚上尝试使用STM32的DFU功能。说白了就是USB版的IAP。不同于SST89XXX系列的IAP,需要自己先将IAP代码下载到0地址。而程序编译时则需选择在0地址外的非IAP代码区域。由于文件过大无法上传,需要的朋友可以上网上搜搜。关于使用也就不用我来写教程了吧,我也是看别人的教程学的,花了10多分钟。不过我也遇到在退出DFU模式时,发现也是49%出错问题。不知是不是DFU软件版本问题。还有一点就是第一次IAP是不用按任何按键。而第二次必须使PB.0按键接地(根据代码可修改,也就是所谓的按键更新代码功能)下载完后直接断开PB.0的地线。复位一下就可以看到代码的效果了。方便的DFU功能相对于串口的IAP而言是进步了不少,至少笔记本用户会很喜欢。近来无聊也不知道该干点什么。离高频和数电考试时间在拉近,复习是必要的........... |
内含一个demo 驱动3.0 和DFU