最近剛做完乙個專案,剛好用到了國產晶元中穎的sh79f166a,由於是第一次用到這款晶元,很多細節不是很清楚,其中也踩過很多坑,在這裡拿出來分享給大家,希望對同樣用到這款晶元的朋友遇到相似的問題有所幫助,同時也是對這段時間的乙個學習總結吧,這也是我寫部落格的初衷!
在這裡我不過多的講解做專案的細節,主要談談在使用這款晶元我踩到的一些「坑」。
首先,看過這款晶元資料手冊的朋友,如果仔細一點的話,肯定會發現,暫存器的位址分為兩個區,bank0區和bank1區,大部分暫存器存放在bank0區,少部分在bank1區,但是它們存在位址重複的現象,比如你要使用bank1區e1h位址p5,如果此時指標指向的是bank0區,那麼你實際使用的是p0,因為它的位址也是e1h;
所以我們每次寫暫存器的時候都應該先指向相應的bank區,尤其是中斷服務函式裡面在進入中斷之前先儲存好bank區值,在退出中斷時恢復bank區值,否則會導致錯誤。當然細心的朋友肯定會發先有些暫存器沒有標明在那個區,那麼這時bank區對這類暫存器沒影響,inscon暫存器可以用來更改bank區。
接下來談談該款晶元的類eeprom,之所以叫「類」eeprom,那它肯定不是真正的eeprom,事實也是如此,本晶元帶有1k的類eeprom儲存空間,分四個區,每個區256個位元組,謹記,在操作,寫入資料時必須先擦除該區的內容,這也許是它和真正的eeprom最大的區別吧,讀資料沒有此要求,在寫入資料過程中記得關中斷,防止被打斷,操作流程嚴格按照手冊說明即可;
最後,談一下系統時鐘配置問題,晶元的系統時鐘選擇通過**選項來設定,還有一些看門狗功能,低電壓復位等等都可以通過**選項配置,在使用keil編譯器時通過編譯器選擇。至於一些分頻的配置可以通過暫存器clkcon設定。
對於之前完全沒有接觸過中穎晶元的朋友應該會有所幫助,關於這款晶元的例程網上比較少,做完專案後基本該晶元所有的外設我都用到了,一些配置函式都有在這裡貼上幾段:
希望對大家有所幫助,如有不對之處,也煩請指正,謝謝大家!!!
python專案小談
專案結構.docs conf.py index.rst quickstart.rst foobar cli.py init py storage.py tests init py test cli.py test storage.py readme.rst requirements.txt setu...
小談NSCalendar中的報錯
nsdatecomponents components nscalendarunit unitflags fromdate nsdate date 這個方法基本上都用過,獲取當前nsdate物件之後,從中提取出 解決問題的方法有兩個。enum typedef nsuinteger nscalenda...
小談spring中的scope屬性
在一次做專案時遇到了這樣的一則警告 invocation of destroy method close failed on bean with name sqlsession html view plain copy print?bean id sqlsessiontemplate class o...