STM32 USB的DFU功能
最近用到USB,后來(lái)發(fā)現(xiàn)了STM32F103可以程序?qū)崿F(xiàn)DFU,在網(wǎng)上搜到代碼對(duì)比官方文件發(fā)現(xiàn)是大容量FLASH的DFU,我用的是STM32F103C8T6,屬于中容量。自己對(duì)著官方例程修改了網(wǎng)友的代碼,改成中容量后可以使用DFU更新固件。修改過(guò)程中要注意幾點(diǎn)
1.在庫(kù)函數(shù)“void SystemInit (void)”結(jié)尾處添加向量表偏移量,開全局中斷(在dfu中關(guān)閉了中斷,在此處打開)。如下圖
2.修改MDK app程序偏移量,如下圖:(預(yù)留了20K FLASH給USB DFU使用,所以APP代碼起始地址0x8005000)
3.APP修改完成后,需要在DFU代碼中修改APP跳轉(zhuǎn)地址,如下圖:
修改完成后,使用官方的“DfuSe_Demo_V3.0_Setup.exe”軟件下載即可。
應(yīng)用環(huán)境:下位機(jī)-STM32F103C8T6
DFU代碼長(zhǎng)度16K
APP代碼長(zhǎng)度27K(基于USB-HID類的發(fā)卡器)
上位機(jī)-win7 旗艦版64位
DfuSe_Demo_V3.0_Setup.exe