工程師在做STM8系列的應用開發中,難免會遇到各種各樣的問題,尤其初次使用。這里結合個人理解及跟有些工程師的溝通交流,抽空整理一些常見的問題,希望幫到更多的工程師。文字中難免有描述不到位的地方,還望諒解。若有錯誤的地方,還忘不吝賜教,用微信或QQ方式都可以。 關于常見問題的匯總,大體分二部門,分別是與調試編譯環境有關的問題、與芯片資料理解相關的問題。本篇是講的后者。 1、option編程問題; 對于STM8系列MCU,經常會有些OPTION項需要配置。配置這些OPTION,可以通過調試或燒錄工具進行,也可以通過用戶自己軟件編程實現。 對于絕大部分OPTION項,都是由兩組數據組成,一組是原碼【OPT】,一組是反碼【OPTn】,這樣做的目的主要是防止輕易被改動。結果有的人在手動軟件配置時,只寫原碼,忘記或忽視了反碼的編寫,使得相應OPTION項的更改沒有生效,自己還懵然不知。  2、GPIO復用配置問題; STM8系列MCU的GPIO很多是具備復用功能的,其中部分復用功能必須配合管腳的重映射才能實現,即配備相應的AFR寄存器及選項位。 由于很多初次使用該類芯片的工程師忽略了這點,經常發現自己代碼寫的非常漂亮,可有些功能就是不對,翻來覆去怎么查錯也找不到原因。正是因為忘記了相應GPIO腳的REMAP配置。比如下方圖形中方框中標注出來的復用功能,就得使用REMAP才能生效。  3、真開漏腳的電平問題; STM8 MCU系列芯片中,有些管腳是真開漏腳,即下面GPIO模塊方框中的P-BUFFER和那個保護二極管都沒有使用。這種情況下,它如果沒接上拉電阻的話,是不能輸出高電平的。經常有人在此類端口沒接上拉的情況下,叫嚷著沒法輸出高電平,比方那些硬件I2C接口。
4、flash編程相關問題; STM8系列MCU對主程序FLASH區或數據EEPROM區進行寫操作前,必須執行開鎖操作。但對數據EEPROM區和程序FLASH區在開鎖密鑰及寫入順序方面并不一樣,另外開鎖和上鎖使用到的寄存器也不一樣。有的人以為二者是一樣也經常導致問題。尤其是如果操作寄存器,看資料不細致的話,容易掉進坑里不自知。【當然如果用ST官方庫,這里就不太容易出錯】 順便提下,對于OPTION的編程跟對EEPROM數據的編程處理方式一樣。 ? 5、外部中斷應用問題; STM8S芯片與STM8L芯片在外部中斷EXTI方面有些不一樣。一是STM8S芯片的外部中斷沒有響應中斷標志,進中斷后無清中斷請求位的說法,而STM8L的EXTI則有相關關外部中斷請求標志,進中斷后如無特別需要得清除相關中斷請求位。 另外,STM8L芯片的EXTI比STM8S設計得稍微復雜點,或者說多了些外部中斷處理方式。STM8L芯片在端口中斷的基礎上,還增加了線中斷,即某個GPIO口線觸發的外部中斷。 再提個非常頻繁發生的問題,外部中斷觸發方式變更的話題。經常有工程師反映,說更改外部中斷的觸發方式不生效或者說觸發方式無法變更而郁悶不已。 這里以8S芯片為例,對于GPIO外部中斷的觸發方式,是由相關寄存器控制的。默認值是0X00,對應口線的觸發方式是下降沿或低電平觸發。如果要更改相應口線的觸發方式,下面紅色方框內文字寫得非常清晰!究赡軅別工程師對英文不太敏感】 也就是說,想要更改口線的外部中斷觸發方式的話,必須先執行關中斷指令,即將CCR寄存器里的L0\L1置1,然后再實施修改操作,否則是無法讓更改生效的。 6、STM8L芯片寫EEPROM與DMA的沖突問題; 如果STM8L芯片進行EEPROM擦寫操作的同時發生DMA操作的話,會導致系統進入莫名其妙的死機狀態。該問題在勘誤手冊里有提到,最簡捷的辦法就是將二者錯開,不要同時出現二者的操作。其它細節可以參考有關芯片的勘誤手冊。
7、STM8S105芯片有關PC4的復用功能重映射到PD7的問題; 對于STM8S105系列芯片,從數據手冊上往往會看到PC4腳的TIM1_CH4的功能可以被重映射到PD7腳。比方說你希望實現PD7腳上的TIM1_CH4的PWM輸出,從PC4實現PD7的映射是沒問題,但映射完后,PD7輸出PWM的同時PC4也輸出PWM。這樣有時會出現開發者不希望看到的情況,因為映射完后如果還希望PC4做別的功能的話,那就麻煩。 關于這點,這里應該是個BUG。STM8S105芯片的勘誤手冊有描述,其實這個映射的最佳用途是在44腳的8S105芯片上,此時那個PC4是沒有了的,映射后也不會出現上面所說的2個腳出現同樣功能的情況。關于這點要注意。
8、Eeprom編程與程序執行問題; STM8芯片中,有些小容量芯片是不支持在寫EEPROM的同時運行FLASH里的代碼的,即不支持RWW【read while writing】。比方8S003、8s103就不支持。最常見的情況就是,這類芯片在做EEPROM寫操作時,中斷不能得到相應的響應而讓工程師一頭霧水。當然其它具有RWW功能的MCU是不會出現這個問題。
9、FLASH運行速度與CPU運行速度匹配的問題; 一般來講,CPU的運算速度要快于甚至遠遠快于總線訪問程序數據的速度。當你使用STM8S20X系列芯片且時鐘高于16M時,需要在相關配置寄存器里做一個關于等待周期的配置,不然的話,你的開發可能要增加新的刺激因素了。  ? 10、STM8S芯片GPIO復用AD功能后無法回到GPIO狀態的問題; 這點就不在這贅述了,有興趣的話可以在我的微信公眾號里查看歷史消息或在我的QQ博客里查找相關文字。 其實,開發調試過程中會遇到很到各式各樣的問題,上面只是做個拋磚引玉式的介紹或提醒。上面提到的問題,很多人少則折騰半天,多則折騰兩三天不等。STM8產品開發工程中除了這些跟芯片技術資料理解有關的問題外,很多問題還跟C語言基礎、電路硬件基礎等有很多關系,這里就沒法再延伸了。 本文出自milershao大師
|