基於mini2440的RTC讀寫(裸機)

2021-06-18 06:50:02 字數 2121 閱讀 1542

很多處理器都有rtc實時時鐘功能,s3c2440也提供了這個功能,其功能主要是:實時時鐘、鬧鐘、tick中斷等。rtc的操作比較簡單。讀寫時rtccon最低位應設定為1,不讀寫時設定為0以免誤修改rtc相應暫存器。

bcdsec,bcdmin,bcdhour,bcdday,bcddate,bcdmon,bcdyear可以設定和讀取rtc的值,在程式設計中需要注意一秒只差的問題(具體可檢視晶元手冊),所以在bcdsec值為0時需要重新讀取rtc相應暫存器,防止誤差,這點需要特別注意。

tick中斷可為rtos提供中斷時鐘,其週期計算如下:

可在ticnt設定相應位。達到週期產生中斷。

鬧鐘功能在rtcalm允許使能。在almsec、almmin、almhour、almdate、almmon、almyear中設定鬧鐘值,到達時間後產生相應中斷。

還有一點需要注意,s3c2440的rtc以bcd碼進行讀寫,所以要以十進位制操作應做相應轉換。rtc操作比較簡單,這裡不再作詳細介紹,具體可檢視晶元手冊。測試:將相應時間寫入rtc、設定相應tick中斷和鬧鐘。通過串列埠顯示相應時間。

**如下:

main.c部分

#define  global_clk 1

#include#include "def.h"

#include "option.h"

#include "2440addr.h"

#include "profile.h"

#include "mmu.h"

extern void rtc_set(char year, char month, char week,

char date, char hour, char min, char sec);

extern void rtc_read(char *year, char *month, char *week,

char *date, char *hour, char *min, char *sec);

extern void rtc_alarm_set(char year, char mon, char date,

char hour, char min, char sec);

extern void rtc_init(void);

extern void rtc_tick(void);

extern void rtc_alarm(void);

extern char tick_flag, alarm_flag;

void delay(int num);

void delay(int num)

/*rtc設定*/

void rtc_set(char year, char month, char week,

char date, char hour, char min, char sec)

/*讀取rtc*/

void rtc_read(char *year, char *month, char *week,

char *date, char *hour, char *min, char *sec)

*sec = (rbcdsec>>4) * 10 + (rbcdsec & 0x0f);

rrtccon &= ~1;

}/*rtc tick時鐘設定*/

void rtc_tick(void)

/*rtc 鬧鐘初始化*/

void rtc_alarm(void)

/*rtc 鬧鐘設定*/

void rtc_alarm_set(char year, char mon, char date,

char hour, char min, char sec)

/*rtc 鬧鐘中斷服務*/

void __irq rtc_alarm_interrupt(void)

/*rtc tick中斷服務*/

void __irq rtc_tick_interrupt(void)

執行結果如下:

mini2440 解除安裝模組

我的mini2440買回來這麼久了,一直有個問題很奇怪,就是執行insmod ko一切正行,lsmod也可以看到你插入的模組,但是用rmmod就會出現no such file,一直對這個問題就感覺很奇怪,也google了很多,網上五花八門的答案都有。最後還是仔細看了手冊才找到答案,原來是要把板子上的...

mini2440儲存空間

s3c2440把低1g的空間分成了8塊,由圖可知,第0至6這七塊的起始位址是不變的。而第七段的位址是可變的 它的位址有第六塊需要用到多少來決定,反正就是第六第七是連在一起的 前6塊可以是rom sram 最後兩塊不但可以是rom,sram外,還可以是sdram.其實啊,簡單點的說,就是只有最後兩塊才...

基於mini2440的看門狗(裸機)

在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對微控制器執行狀態進行實時監測的考慮,便產生了一種專門用於監測微控制器...