寄存器的妙用

   在一個項目中,需要在正常運行狀態和待機狀態之間傳遞信息!

待機狀態時,程序代碼、變量、堆棧都放在主芯片的幾K大小的RAM區運行;使用彙編語言實現!

爲了省電,把DDR,程序ROM,幾乎所有硬件模塊都關閉了,只留下RTC,GPIO,中斷等相應按鍵,遙控器,時間事件。

怎麼實現相互傳遞信息呢?

1.使用全局變量不行,因爲全局變量存儲在DDR中,待機後就關閉了。

2.使用flash存儲可以嗎?可以實現,但是很不好.主要有a.需要在待機狀態打開flash,耗電; b.在正常運行時,FLASH使用MTD管理,在待機時,實現flash讀寫,尋址到變量的地址很麻煩,使用彙編語言實現呢。佔用的ram的空間太多了。並且不利於維護程序。c.速度慢。在待機狀態太難實現了。


苦思冥想了一下午終於想到辦法,使用在待機狀態還處於活動狀態模塊的寄存器傳輸變量。動手試驗!

先用UART模塊的閒置不用的寄存器,發現在待機狀態UART模塊也斷電了。

想GPIO模塊在待機狀態肯定不會斷電,使用GPIO閒置不用的寄存器。發現有許多GPIO電平變換中斷寄存器沒有使用,還是32位的呢!

配合RESET寄存器還可以判斷冷熱啓動,發現可以在正常運行和待機狀態正常傳輸信息了!實現代碼很少,並且速度很快!

後來在這個基礎上在正常狀態和待機狀態傳輸了許多信息!


希望能有更好的辦法!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章