日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]STM8的EEPROM在復(fù)位后,要想要寫(xiě)入數(shù)據(jù),必須先解鎖,必然無(wú)法寫(xiě)入數(shù)據(jù)。解鎖就是向 FLASH_DUKR 中先后寫(xiě)入:第一個(gè)硬件秘鑰:0xAE第二個(gè)硬件秘鑰:0x56兩個(gè)字節(jié)的數(shù)據(jù)。此時(shí)FLASH_IAPSR 中的 DUL 位將會(huì)變?yōu)?,表示

STM8的EEPROM在復(fù)位后,要想要寫(xiě)入數(shù)據(jù),必須先解鎖,必然無(wú)法寫(xiě)入數(shù)據(jù)。解鎖就是向 FLASH_DUKR 中先后寫(xiě)入:

第一個(gè)硬件秘鑰:0xAE

第二個(gè)硬件秘鑰:0x56

兩個(gè)字節(jié)的數(shù)據(jù)。

此時(shí)FLASH_IAPSR 中的 DUL 位將會(huì)變?yōu)?,表示 EEPROM 已經(jīng)成功解鎖,可以進(jìn)行寫(xiě)入操作了。如果發(fā)現(xiàn) DUL 位不為 1 ,是可以按順序重復(fù)寫(xiě)入秘鑰的,直到 DUL 位為 1 為止。

但手冊(cè)上是這么說(shuō)的:

中文手冊(cè):

2. 如果密鑰輸入錯(cuò)誤,應(yīng)用程序可以嘗試重新輸入這兩個(gè)MASS密鑰來(lái)對(duì)DATA區(qū)域進(jìn)行解
鎖。

4. 如果密鑰輸入錯(cuò)誤,DATA EEPROM區(qū)域在下一次系統(tǒng)復(fù)位之前將一直保持寫(xiě)保護(hù)狀態(tài)。

在下一次復(fù)位前,再向該寄存器進(jìn)行的任何寫(xiě)操作都會(huì)被系統(tǒng)忽略掉。

英文手冊(cè):

2. If the key available on the data bus is incorrect, the FLASH_PUKR register remains
locked until the next reset. Any new write commands sent to this address are
discarded.

4. If the key available on the data bus is incorrect, the data EEPROM area remains write
protected until the next reset. Any new write command sent to this address is ignored.


這些說(shuō)明,給人的感覺(jué)是:如果第一個(gè)秘鑰輸入錯(cuò)誤,那么可以重復(fù)輸入,直到解鎖,但如果第一個(gè)秘鑰輸入正確,而第二個(gè)秘鑰輸入錯(cuò)誤,則將永久鎖定,任何對(duì)該寄存器的寫(xiě)入操作都會(huì)被忽略掉,直到復(fù)位后下一次解鎖前。


事實(shí)上,我經(jīng)過(guò)試驗(yàn),無(wú)論第一個(gè)秘鑰錯(cuò)誤,還是第二個(gè)秘鑰錯(cuò)誤,均可以重復(fù)操作直到解鎖為止。




這里要注意的是,2個(gè)密鑰的順序,與STM8的用戶(hù)手冊(cè)上是相反的,如果按照手冊(cè)上的順序,就會(huì)停留在do…while循環(huán)中。具體原因,也不是很清楚,也可能是我拿到的手冊(cè)(中文和英文的都一樣)太舊了,或者是理解有誤。

注:
參考資料說(shuō)的解鎖順序的問(wèn)題:
我們來(lái)看看官方給的庫(kù)函數(shù)stm8s_flash.c文件中

void FLASH_Unlock(FLASH_MemType_TypeDef MemType)

{

/* Check parameter */

assert_param(IS_MEMORY_TYPE_OK(MemType));

/* Unlock program memory */

if (MemType == FLASH_MEMTYPE_PROG)

{

FLASH->PUKR = FLASH_RASS_KEY1;//KEY1:0x56

FLASH->PUKR = FLASH_RASS_KEY2;//KEY2:0xAE

}

/* Unlock data memory */

else

{

FLASH->DUKR = FLASH_RASS_KEY2; /* Warning: keys are reversed on data memory !!! */

FLASH->DUKR = FLASH_RASS_KEY1;

}

}

從上面的函數(shù)可以看到解鎖FLASH和DATA EEPROM時(shí)的順序是不一樣的,中文手冊(cè)上沒(méi)體現(xiàn)這一點(diǎn)。當(dāng)然我們要做的就是直接拿官方的庫(kù)來(lái)用就行了??!


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉