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

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


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

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


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