娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

s3c2440的rtc操作

發布者:快樂舞動最新更新時間:2024-08-30 來源: cnblogs關鍵字:s3c2440  rtc操作  寄存器 手機看文章 掃描二維碼
隨時隨地手機看文章

實時時鐘(RTC)其主要功能是電源故障的制度下,使用后備電源,時鐘繼續。為了不浪費時間信息。


s3c2440內部集成了RTC模塊,并且用起來也十分簡單。


其內部的寄存器BCDSEC,BCDMIN,BCDHOUR,BCDDAY。BCDDATE,BCDMON和BCDYEAR分別存儲了當前的秒,分,小時。星期,日,月和年,表示時間的數值都是BCD碼。


這些寄存器的內容可讀可寫。而且僅僅有在寄存器RTCCON的第0位為1時才干進行讀寫操作。為了防止誤操作。當不進行讀寫時。要把該位清零。當讀取這些寄存器時。可以獲知當前的時間;當寫入這些寄存器時,可以改變當前的時間。


另外須要注意的是。由于有所謂的“一秒


誤差”,因此當讀取到的秒為0時,,才干保證時間的正確(關于這點能夠看s3c2440文檔)。


以下給出一個簡單的程序。當剛上電的時候讀取當前時間值,通過串口顯示出來。并設置當前的時間為 2014年8月25日,21點40分 33秒:


write_date(0x14,0x8,0x25,0x1,0x21,0x40,0x33);

read_date();

printf('year:%4d,month:%2d,day:%2d,week:%2d,hour:%2d,minute:%2d,second:%2drn',

rYear, rMonth,rDay,rDayOfWeek,rHour,rMinute,rSecond);

//參數須要是BCD形式的

void write_date(UINT8 year,UINT8 month,UINT8 day,UINT8 dayofweek,UINT8 hour,UINT8 minute,UINT8 second)

{

rRTCCON = 1;

rBCDYEAR = year;            //年

rBCDMON  = month ;           //月

rBCDDAY  = dayofweek;            //日

rBCDDATE = day; //星期

rBCDHOUR = hour;            //小時

rBCDMIN  = minute;                   //分

rBCDSEC  = second;            //秒

rRTCCON = 0;

}


void read_date(void)

{

rRTCCON = 1 ;

if(rBCDYEAR==0x99)

rYear = 1999;

else

rYear    = (2000 + FROM_BCD(rBCDYEAR));

rMonth  = FROM_BCD(rBCDMON & 0x1f);

rDayOfWeek = FROM_BCD(rBCDDAY & 0x0f);

rDay = FROM_BCD(rBCDDATE&0x3f);

rHour   = FROM_BCD(rBCDHOUR & 0x3f);

rMinute     = FROM_BCD(rBCDMIN & 0x7f);

rSecond     = FROM_BCD(rBCDSEC & 0x7f);

rRTCCON = 0 ;

}


發懶了,竟然沒有考慮到一秒誤差。這算是個簡單的 小功能。能夠在我github上clone。


除了簡單的計時之外RTC還提供了2種時鐘中斷功能:報警中斷和時間節拍中斷,時間節拍中斷。顧名思義。就像一個節拍器。能夠等時性的控制節拍。


因此它類似于定時器中斷。


但時間節拍中斷是毫秒級的,而定時器中斷能夠達到微秒,甚至更小級別。時間節拍中斷的周期公式為:(n+1)÷128。單位是秒,即每隔這么長時間,會中斷一次。


當中n的值為1~127,它存儲在寄存器TICNT的低6位中,當寄存器TICNT的第7位被置1時,表示開啟時間節拍中斷。這時n遞減,當減為0時,進入時間節拍中斷。一般在ucos里面的節拍就是ms級別,作為ucos的節拍比較合適。


報警中斷能夠實現當實時時間達到預置的時間后。引起報警。預置的時間是存儲在報警時間數據寄存器中的(rtc有2套時間有關的寄存器,都是BCD形式存儲。當前時間用一套,),包含ALMYEAR(年)、ALMMON(月)、ALMDATE(日)、ALMHOUR(小時)、ALMMIN(分)和ALMSEC(秒)。而怎樣報警。是由報警控制寄存器RTCALM控制的。


它的   第6位置1表示全局報警,而第5位到第0位置1分別表示年、月、日、小時、分和秒報警。

7a232f64e28cd7186adb029c2db99833_SouthEast.png

比方,我們想要在2010年4月5日22時30分0秒報警。那么把這個時間分別存儲到對應的報警時間數據寄存器中,然后設置RTCALM為0x7F,這樣當實時時鐘到達這個時刻時,會引起報警中斷;


又比方我們想要系統具有鬧鐘的功能,讓它每天早上6點提醒我們起床。那么我們能夠設置ALMHOUR為6,RTCALM為0x44。


假設我們僅僅想讓系統在4月份的時候提醒我們6點起床,那該怎么辦呢?這個問題對于s3c2440來說就是小菜一碟,僅僅要我們再在ALMMON里寫入4,然后把RTCALM改為0x54就可以。


總之,就是系統依據RTCALM所置1的相應位來比較相相應的當前時間與報警時間數據寄存器中的值。假設相等就進入中斷,不論設置什么形式的鬧鐘中斷全局使能須要置位。


能夠依據這個實現一些功能:時間節拍中斷設置為1s一次,每次節拍中斷向串口寫一串字符'beat int'。而   剛上電之后設置鬧鐘中斷   則是在上電之后1分鐘之后向串口寫字符


串'alarm int'。



void Task2(void *pdata)

{

int i=0;

write_date(0x14,0x8,0x25,0x1,0x21,0x40,0x33);

set_alarm(0x14,0x8,0x25,0x21,0x41,0x33);


while(1)

{

i++;

if(i>99)i=0;

read_date();

printf('year:%4d,month:%2d,day:%2d,week:%2d,hour:%2d,minute:%2d,second:%2drn',

rYear, rMonth,rDay,rDayOfWeek,rHour,rMinute,rSecond);


OSTimeDly( 5 );

OSTimeDly(OS_TICKS_PER_SEC);

}

}



void init_rtc(void)

{

rINTMSK &= ~( (1<<8) | (1<<30) );

pIRQ_RTC = (UINT32)alarm_rtc;

pIRQ_TICK=(UINT32)tick_rtc;


rTICNT=(0x7f)|0x80;    //使能中斷   tick=127

rRTCALM = 0x41;     //RTC鬧鐘控制寄存器   //0x41表示使能RTC鬧鐘,以及使能秒時鐘鬧鐘   

}


void tick_rtc(void)

{

printf('beat intrn');

}


void alarm_rtc(void)

{

printf('alarm intrn');

}


關鍵字:s3c2440  rtc操作  寄存器 引用地址:s3c2440的rtc操作

上一篇:uboot在s3c2440上的移植(6)
下一篇:s3c2440 地址分配講解

推薦閱讀最新更新時間:2025-06-07 23:42

基于S3C2440和DM9000移植LWIP
終于開始我的第一篇筆記了。這回要做的事情,是以太網的移植。 使用mini2440已經有一段時間了。諸如裸機的LED,鍵盤開關等等等等也都試驗過了,uCOS,WinCE也是淺嘗了一下。如今想到了以太網。 由于mini2440的板上集成了一個DM9000的網卡,并且在CE系統里面成功的使用以太網與PC連接了。于是自然而然的想,能不能在uCOS下也實現以太網接口呢? 一上來什么都不懂,于是找一些資料,在這里要謝謝焦海波老師所著的嵌入式網絡系統設計一書,移植過程中很多資料都來源于這本書。其次是mikenoodle的單片機驅動DM9000網卡一文,里面詳細地講述如何在2440裸機下驅動DM9000網卡。 首先明確我們需要做的事情是什么?為了
[單片機]
S3C2440硬件編程實例
S3C2440硬件編程實例——GPIO(一)匯編程序: @****************************************************************************** @ 功能:LED點燈程序,點亮LED1-4 @****************************************************************************** .text .global _start _start: LDR R0,=0x56000010 @
[單片機]
<font color='red'>S3C2440</font>硬件編程實例
ARM Linux S3C2440 之中斷分析
硬件篇: S3C2440 是arm920T架構,先溫習一下s3c2440中的中斷控制器原理和相關硬件構架。 中斷控制器(InterruptControler): S3c2440A的中斷控制器有60個中斷源,如DMA中斷,UART中斷,IIC中斷等,60個中斷源在寄存器中用相應的位來表示。當有多個中斷要求到來時,經過仲裁過程后,中斷控制器向CPU請求FIQ或者IRQ中斷。仲裁過程根據硬件中的優先級模塊來決定,其結果最后寫進中斷未決(intterrupt pending)寄存器中,通過中斷未決寄存器的值可以清楚哪個中斷發生了。 S3c2440中斷控制器流程圖: 掛起 中斷模式(InterruptMode): ARM920T(CPU)
[單片機]
ARM Linux <font color='red'>S3C2440</font> 之中斷分析
s3c2440中GPIO上拉電阻的初步認識
  GPIO做輸出使用時要加上拉電阻,因為默認的是漏極開路,高阻態,無法輸出高電平。   GPIO做輸入時要根據外圍電路選擇是否設置上拉電阻: 在外接電路能提供高低電平時可不加上拉電阻,比如作為第二功能的ADC輸入,或作為地址總線時;而且作為ADC輸入時若加上上拉電阻,還會影響ADC的測量。 當外接電路不能提供高和低電平時加上拉電阻,比如作為按鍵輸入時,如不加上拉電阻,只能輸入低電平,無法輸入高電平。
[單片機]
s3c2440 LCD(sony x35)
一、lcd 屏的分類 STN是早期彩屏的主要器件, 一般的STN仍然是256色的,優點是:價格低,能耗小。 TFT的亮度好,對比度高,層次感強,顏色鮮艷。缺點是比較耗電,成本較高。 UFB是專門為移動電話和PDA設計的顯示屏,它的特點是:超薄,高亮度??梢燥@示65536色, 耗電比TFT少,價格和STN差不多。 OLED (Organic Light Emitting Display)即有機發光顯示器,在手機LCD上屬于新型產品,被稱譽為“夢幻顯示器”。OLED顯示技術與傳統的LCD顯示方式不同,無需背光燈。 在mini2440 中 我們使用的是sony 的X35 lcd ,屬于TFT屏。 二、LCD
[單片機]
<font color='red'>s3c2440</font> LCD(sony x35)
06-S3C2440學習之移植2012u-boot到S3C2440(移植過程二)支持NAND啟動
說明: 原來的代碼在鏈接時加了 -pie 選項, 使得u-boot.bin里多了 *(.rel*) , *(.dynsym) (*(.rel*) , *(.dynsym)這些地址信息用于實現UBOOT可以被拷貝到任何地方,更新地址信息),但使得程序非常大,結構復雜,不利于從NAND啟動(重定位之前的啟動代碼應該少于4K)。所提去掉了pie功能。 (1)使用一下之前寫的init.c 拷貝到2440單板下: 修改init內容為: /* NAND FLASH控制器 */ #define NFCONF (*((volatile unsigned long *)0x4E000000)) #define
[單片機]
06-S3C2440學習之移植2012u-boot到<font color='red'>S3C2440</font>(移植過程二)支持NAND啟動
s3c2440學習系列6(dma 續)
DMA優點是其進行數據傳輸時不需要CPU的干涉,可以大大提高CPU的工作效率。 DMA大容量數據傳輸中非常重要,比如圖像數據傳輸,SD卡數據傳輸,USB數據傳輸等等。 S3C2410有四個DMA,每個DMA支持工作方式基本相同,但支持的source Dest可能略有不同。 那么怎么使用DMA呢,S3C2410內部集成了DMA控制器,我們只需要簡單的配置一下寄存器就可以實現DMA的傳輸了。 步驟與要點: 1.數據從哪里來,到哪里去? 使用DMA當然首先我們要知道數據的流向,DISRCx寄存器是DMA初始源寄存器存放了數據的源地址。DIDSTx是DMA的初始目的寄存器,應該存放數據的目的地址。 2.數據走得什么總線
[單片機]
uboot-2011.12移植到S3C2440(一)—— 簡單修改使u-boot能夠編譯
交叉編譯環境為Fedora14和友善之臂做的交叉編譯工具鏈 1、修改boards.cfg,添加紅色的一行 smdk2400 arm arm920t - samsung s3c24x0 smdk2410 arm arm920t - samsung s3c24x0 smdk2440 arm arm920t - samsung s3c24x0 2、在$(SOURCEDIR)/u-boot-2011.06/board/samsung下,復
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 灵寿县| 资兴市| 安岳县| 贡觉县| 阿合奇县| 呼伦贝尔市| 临沂市| 阿拉尔市| 葫芦岛市| 和平县| 天祝| 芦溪县| 洛扎县| 乌拉特中旗| 鄂尔多斯市| 锡林浩特市| 监利县| 雅江县| 杂多县| 新巴尔虎左旗| 聂荣县| 满城县| 溧阳市| 阳谷县| 万山特区| 长治市| 临沭县| 巩义市| 石台县| 绥宁县| 昆明市| 宁明县| 邛崃市| 海南省| 昂仁县| 德钦县| 凤庆县| 河南省| 漠河县| 高碑店市| 延吉市|