stm32編程方式:
(1)ICP(JTAG/SWD協(xié)議或者系統(tǒng)加載bootloader(串口))下載程序到微控制器中。
(2)IAP:就是通過任何一個通信接口(IO端口,USB,CAN,SPI,IIC等),下載程序或數(shù)據(jù)到存儲器中,stm32允許用戶在應(yīng)用程序中重新燒寫閃存存儲器的內(nèi)容。然而,IAP需要至少一部分程序(bootloder,注意此bootloader不同于上部分的,是自己編寫的。上部分的是系統(tǒng)的)通過ICP的方式燒到閃存存儲器中。
stm32閃存包含3部分:
(1)主存儲器,
(2)信息塊(啟動程序代碼,用戶選擇字),
(3)閃存寄存器接口寄存器。
通常說的閃存大小就是主存儲器的大小。stm32啟動方式,B0=0,B1=0,系統(tǒng)運(yùn)行就是從0x08000000開始的。如果B0=1,B1=0,就是運(yùn)行信息塊中的啟動程序(st官方固化在里面的),用于串口下載。
注意事項:
PROGRAM
(1)STM32復(fù)位后,F(xiàn)PEC模塊是被保護(hù)的,F(xiàn)lash_CR是不能被寫入的,通過寫入特定的序列到FLASH_KEY寄存器才能解鎖FPEC模塊,這個過程叫Unlock。
(2)STM32的閃存編程每次必須寫入是16位,當(dāng)FLASH_CR寄存器的PG位為1時候,在閃存地址寫入一個半字將啟動一次編程。
(3)在編程的過程中(BSY位為1),任何的讀寫閃存都會使CPU暫停,直到編程結(jié)束。
(4)stm32的FLASH編程時候,必須要求寫入地址的FLASH是被擦除了的(也就是值為0XFFFF),否則無法寫入。(回想FLASH模擬EEPROM)
ERSER
擦除:頁擦除,整片擦除。
幾個寄存器:flash_keyr,flash_cr,flash_sr,flash_ar