整理:MilerShao ST公司的STM8S與STM8L系列雖同屬STM8內(nèi)核的8位機(jī)陣容,但二者還是有較大差異。STM8S系列是標(biāo)準(zhǔn)通用型系列,而STM8L屬于超低功耗系列。STM8L有更為豐富的外設(shè)和低功耗管理模式,有更低的工作電壓、更寬的工作電壓范圍。STM8L系列在穿戴式產(chǎn)品和智能家居應(yīng)用領(lǐng)域有著廣泛的應(yīng)用空間。 這里不對(duì)二者的差異做拓展表述,主要想給那些用過(guò)STM8S系列MCU后打算使用STM8L系列的工程師一些提醒,即從STM8S開(kāi)發(fā)轉(zhuǎn)向STM8L時(shí)常常可能遇到的幾個(gè)問(wèn)題,算是拋磚引玉。 1、STM8S 與 STM8L 兩個(gè)系列的ST官方外設(shè)標(biāo)準(zhǔn)固件庫(kù)是不一樣的,各自有一套。另外,各自的寄存器編程手冊(cè)也不一樣,即參考手冊(cè)不一樣。 2、這個(gè)也是遇到最為頻繁的問(wèn)題,就是默認(rèn)的外設(shè)時(shí)鐘開(kāi)關(guān)問(wèn)題。 對(duì)于STM8S芯片而言,各個(gè)外設(shè)時(shí)鐘在芯片復(fù)位后,默認(rèn)就是打開(kāi)的。而STM8L系列,則恰恰相反,各個(gè)外設(shè)時(shí)鐘在芯片復(fù)位后,默認(rèn)就是關(guān)閉的。經(jīng)常有人從8S芯片轉(zhuǎn)過(guò)來(lái)開(kāi)發(fā)STM8L芯片時(shí),在這里卡殼,遇到外設(shè)不工作啊,調(diào)試時(shí)相關(guān)外設(shè)寄存器根本沒(méi)法設(shè)置等。 

3、EXTI外部中斷請(qǐng)求標(biāo)志位問(wèn)題。這個(gè)問(wèn)題也是經(jīng)常有人遇到的。
STM8L系列芯片里有相關(guān)外部中斷請(qǐng)求標(biāo)志位,而STM8S沒(méi)有相關(guān)標(biāo)志。如果STM8L中斷程序里如果像STM8S那樣不做相關(guān)外部中斷請(qǐng)求標(biāo)志的清除的話,后果很?chē)?yán)重。會(huì)出現(xiàn)中斷循環(huán)往復(fù)進(jìn)入,常給人死機(jī)現(xiàn)象。 
4、ADC啟動(dòng)的問(wèn)題。 有一次某工程師用STM8L芯片開(kāi)發(fā)程序,之前用STM8S芯片開(kāi)發(fā)過(guò)產(chǎn)品。在編寫(xiě)代碼時(shí)往往沿襲STM8S的寫(xiě)法。在用到STM8L芯片AD時(shí),發(fā)現(xiàn)怎么也不工作。 查看其代碼,他像很多使用STM8 MCU的工程師一樣也是直接操作寄存器。因?yàn)樗f(shuō)是從8S的代碼改過(guò)來(lái)的,我先對(duì)著STM8S的MCU參考手冊(cè)比對(duì),貌似沒(méi)啥問(wèn)題,再對(duì)著STM8L的ADC相關(guān)寄存器部分看了一會(huì)。 發(fā)現(xiàn)8S和8L芯片在AD上電后,開(kāi)啟AD轉(zhuǎn)換的指令是不一樣的。他的代碼在該處有問(wèn)題。 STM8L芯片在AD上電穩(wěn)定后,開(kāi)啟AD轉(zhuǎn)換是通過(guò)設(shè)置ADC_CR1里的START位,而8S芯片則不是,還是通過(guò)二次置位ADON位來(lái)啟動(dòng)AD轉(zhuǎn)換。


最后順便提下,對(duì)于STM8S或STM8L的ADC模塊,上電開(kāi)啟后需要一段穩(wěn)定時(shí)間,STM8S芯片需要大概7US左右,而STM8芯片需要3US左右。編程時(shí)適當(dāng)注意下。  總之,STM8S系列與STM8L系列差別還是很大的,在從STM8S開(kāi)發(fā)轉(zhuǎn)向STM8L系列時(shí),出現(xiàn)了問(wèn)題不要執(zhí)著于”STM8S平臺(tái)上用得好好的”心理,最好結(jié)合STM8L參考技術(shù)手冊(cè)具體核對(duì)驗(yàn)證為宜。整理:MilerShao ST公司的STM8S與STM8L系列雖同屬STM8內(nèi)核的8位機(jī)陣容,但二者還是有較大差異。STM8S系列是標(biāo)準(zhǔn)通用型系列,而STM8L屬于超低功耗系列。STM8L有更為豐富的外設(shè)和低功耗管理模式,有更低的工作電壓、更寬的工作電壓范圍。STM8L系列在穿戴式產(chǎn)品和智能家居應(yīng)用領(lǐng)域有著廣泛的應(yīng)用空間。 這里不對(duì)二者的差異做拓展表述,主要想給那些用過(guò)STM8S系列MCU后打算使用STM8L系列的工程師一些提醒,即從STM8S開(kāi)發(fā)轉(zhuǎn)向STM8L時(shí)常常可能遇到的幾個(gè)問(wèn)題,算是拋磚引玉。 1、STM8S 與 STM8L 兩個(gè)系列的ST官方外設(shè)標(biāo)準(zhǔn)固件庫(kù)是不一樣的,各自有一套。另外,各自的寄存器編程手冊(cè)也不一樣,即參考手冊(cè)不一樣。 2、這個(gè)也是遇到最為頻繁的問(wèn)題,就是默認(rèn)的外設(shè)時(shí)鐘開(kāi)關(guān)問(wèn)題。 對(duì)于STM8S芯片而言,各個(gè)外設(shè)時(shí)鐘在芯片復(fù)位后,默認(rèn)就是打開(kāi)的。而STM8L系列,則恰恰相反,各個(gè)外設(shè)時(shí)鐘在芯片復(fù)位后,默認(rèn)就是關(guān)閉的。經(jīng)常有人從8S芯片轉(zhuǎn)過(guò)來(lái)開(kāi)發(fā)STM8L芯片時(shí),在這里卡殼,遇到外設(shè)不工作啊,調(diào)試時(shí)相關(guān)外設(shè)寄存器根本沒(méi)法設(shè)置等。 

3、EXTI外部中斷請(qǐng)求標(biāo)志位問(wèn)題。這個(gè)問(wèn)題也是經(jīng)常有人遇到的。
STM8L系列芯片里有相關(guān)外部中斷請(qǐng)求標(biāo)志位,而STM8S沒(méi)有相關(guān)標(biāo)志。如果STM8L中斷程序里如果像STM8S那樣不做相關(guān)外部中斷請(qǐng)求標(biāo)志的清除的話,后果很?chē)?yán)重。會(huì)出現(xiàn)中斷循環(huán)往復(fù)進(jìn)入,常給人死機(jī)現(xiàn)象。 
4、ADC啟動(dòng)的問(wèn)題。 有一次某工程師用STM8L芯片開(kāi)發(fā)程序,之前用STM8S芯片開(kāi)發(fā)過(guò)產(chǎn)品。在編寫(xiě)代碼時(shí)往往沿襲STM8S的寫(xiě)法。在用到STM8L芯片AD時(shí),發(fā)現(xiàn)怎么也不工作。 查看其代碼,他像很多使用STM8 MCU的工程師一樣也是直接操作寄存器。因?yàn)樗f(shuō)是從8S的代碼改過(guò)來(lái)的,我先對(duì)著STM8S的MCU參考手冊(cè)比對(duì),貌似沒(méi)啥問(wèn)題,再對(duì)著STM8L的ADC相關(guān)寄存器部分看了一會(huì)。 發(fā)現(xiàn)8S和8L芯片在AD上電后,開(kāi)啟AD轉(zhuǎn)換的指令是不一樣的。他的代碼在該處有問(wèn)題。 STM8L芯片在AD上電穩(wěn)定后,開(kāi)啟AD轉(zhuǎn)換是通過(guò)設(shè)置ADC_CR1里的START位,而8S芯片則不是,還是通過(guò)二次置位ADON位來(lái)啟動(dòng)AD轉(zhuǎn)換。


最后順便提下,對(duì)于STM8S或STM8L的ADC模塊,上電開(kāi)啟后需要一段穩(wěn)定時(shí)間,STM8S芯片需要大概7US左右,而STM8芯片需要3US左右。編程時(shí)適當(dāng)注意下。  總之,STM8S系列與STM8L系列差別還是很大的,在從STM8S開(kāi)發(fā)轉(zhuǎn)向STM8L系列時(shí),出現(xiàn)了問(wèn)題不要執(zhí)著于”STM8S平臺(tái)上用得好好的”心理,最好結(jié)合STM8L參考技術(shù)手冊(cè)具體核對(duì)驗(yàn)證為宜。 |