/*BaseaddressoftheFlashsectors*/#defineADDR_FLASH_SECTOR_0((uint32_t)0x08000000)/*Base@ofSector0,16Kbytes*/#defineADDR_FLASH_SECTOR_1((uint32_t)0x08004000)/*Base@ofSector1,16Kbytes*/#defineADDR_FLASH_
STM32F系列單片機(jī)內(nèi)部含有較大容量的FLASH存儲(chǔ)器,但沒(méi)有EEPROM存儲(chǔ)器,有時(shí)候?qū)τ趨?shù)的保存不得不另外加一片EEPROM芯片。這對(duì)于現(xiàn)如今大部分MCU都是FLASH+EEPROM的配置而言,顯的相當(dāng)?shù)牟缓竦溃绕涫菑腁VR轉(zhuǎn)過(guò)來(lái)的
這次要講講如何用USB升級(jí)單片機(jī)代碼。以前曾經(jīng)做過(guò)串口升級(jí),網(wǎng)絡(luò)升級(jí),升級(jí)的基本原理都類(lèi)似,只不過(guò)升級(jí)的工具不同罷了,串口升級(jí)當(dāng)然是用串口了,網(wǎng)絡(luò)升級(jí)用的是TCP/IP,USB升級(jí)當(dāng)然用的是USB了。下面就來(lái)講講USB
1 前言客戶(hù)反饋在使用STM32F412的時(shí)候,擦除sector 8~11發(fā)現(xiàn)時(shí)間過(guò)長(zhǎng),從而導(dǎo)致意外觸發(fā)IWDG復(fù)位。2 問(wèn)題分析2.1 問(wèn)題詳情通過(guò)與客戶(hù)郵件和電話(huà)溝通,了解到客戶(hù)主要是想使用內(nèi)部FLASH暫時(shí)保存IAP升級(jí)時(shí)的程序數(shù)據(jù),
由于老師的要求,所以寫(xiě)了一份讀寫(xiě)STM32內(nèi)部FLASH的代碼,這樣的話(huà)就可以把STM32里面沒(méi)有用來(lái)保存代碼段的部分用來(lái)存儲(chǔ)數(shù)據(jù)了。由于《stm32flash編程手冊(cè)》是很久很久以前看的,現(xiàn)在也沒(méi)心情去仔細(xì)看那份手冊(cè)了。大概
因?yàn)橐脙?nèi)部FLASH代替外部EEPROM,把參數(shù)放在STM32的0x08000000+320K處,其中20K是bootloader,300K是應(yīng)用程序。原理:先要把整頁(yè)FLASH的內(nèi)容搬到RAM中,然后在RAM中改動(dòng),然后擦除整頁(yè)FLASH,再把改動(dòng)后的內(nèi)容寫(xiě)入