在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3C2440 實(shí)時(shí)時(shí)鐘RTC

            S3C2440 實(shí)時(shí)時(shí)鐘RTC

            作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
            實(shí)時(shí)時(shí)鐘RTC)單元可以在當(dāng)系統(tǒng)電源關(guān)閉后通過(guò)備用電池工作。RTC可以通過(guò)使用STRB/LDRB ARM操

            作發(fā)送8位二-十進(jìn)制交換碼(BCD)值數(shù)據(jù)給CPU。這些數(shù)據(jù)包括年、月、日、星期、時(shí)、分和秒的時(shí)間信息。
            RTC 單元工作在外部32.768kHz晶振并且可以執(zhí)行鬧鐘功能。

            本文引用地址:http://www.biyoush.com/article/201611/319202.htm

            RTC操作比較簡(jiǎn)單,寄存器的設(shè)置在數(shù)據(jù)手冊(cè)上寫的很詳細(xì),就不寫了,貼一個(gè)RTC代碼,該程序參考了天翔的RTC程序代碼,主要是他寫的比較好,都模塊化了,我修改了他的代碼,有鬧鐘(利用蜂鳴器),在TQ2440 板子上能運(yùn)行,程序功能:串口每秒顯示一次時(shí)間并且LED1閃一次,在鬧鐘設(shè)置中,秒為20時(shí),顯示鬧鐘時(shí)間并蜂鳴器發(fā)聲幾秒鐘。

            1. #include"2440addr.h"
            2. #include"Option.h"
            3. #include"2440lib.h"
            4. #include"def.h"
            5. #defineLED1_ON(rGPBDAT&=~(1<<5))
            6. #defineLED1_OFF(rGPBDAT|=(1<<5))
            7. void__irqRTC_tickHandler(void);
            8. void__irqRTC_alarmHandler(void);
            9. U8alarmflag=0;
            10. typedefstructDate//定義一個(gè)表示日期時(shí)間的結(jié)構(gòu)體
            11. {U16year;
            12. U8month;
            13. U8day;
            14. U8week_day;
            15. U8hour;
            16. U8minute;
            17. U8second;
            18. }date;
            19. dateC_date;
            20. char*week_num[7]={"SUN","MON","TUES","WED","THURS","FRI","SAT"};//定義一個(gè)指針數(shù)組
            21. voidBeep_Freq_Set(U32freq)
            22. {
            23. rGPBCON&=~3;
            24. rGPBCON|=2;//設(shè)置GPB0為OUT0
            25. rGPBUP=0x0;//使能上拉
            26. rTCFG0&=~0xff;
            27. rTCFG0|=15;//預(yù)分頻值為15
            28. rTCFG1&=~0x0f;
            29. rTCFG1|=0x02;//分頻值為8
            30. rTCNTB0=(PCLK>>7)/freq;//設(shè)定定時(shí)器0計(jì)數(shù)緩沖器的值
            31. rTCMPB0=rTCNTB0>>1;//定時(shí)器0比較緩沖器的值,PWM輸出占空比50%
            32. rTCON&=~0x1f;
            33. rTCON|=0xb;//自動(dòng)重載,關(guān)閉變相,手動(dòng)更新,開(kāi)啟定時(shí)器0
            34. rTCON&=~2;//清除手動(dòng)更新位
            35. }
            36. voidBeep_Stop(void)
            37. {
            38. rGPBCON&=~3;//setGPB0asoutput
            39. rGPBCON|=1;
            40. rGPBDAT&=~1;//輸出低電平
            41. }
            42. voiddelay(intx)
            43. {
            44. inti,j;
            45. for(i=0;i
            46. for(j=0;j<1000000;j++);
            47. }
            48. /********************************
            49. *
            50. *設(shè)置實(shí)時(shí)時(shí)鐘日期、時(shí)間
            51. *
            52. *********************************/
            53. voidRTC_setdate(date*p_date)
            54. {
            55. rRTCCON=0x01;//RTC讀寫使能,BCD時(shí)鐘、計(jì)數(shù)器、無(wú)復(fù)位
            56. rBCDYEAR=p_date->year;
            57. rBCDMON=p_date->month;
            58. rBCDDATE=p_date->day;
            59. rBCDDAY=p_date->week_day;//設(shè)置日期時(shí)間
            60. rBCDHOUR=p_date->hour;
            61. rBCDMIN=p_date->minute;
            62. rBCDSEC=p_date->second;
            63. rRTCCON=0x00;//RTC讀寫禁止,BCD時(shí)鐘、計(jì)數(shù)器、無(wú)復(fù)位
            64. }
            65. /********************************
            66. *
            67. *讀取實(shí)時(shí)時(shí)鐘日期、時(shí)間
            68. *
            69. *********************************/
            70. voidRTC_getdate(date*p_date)
            71. {
            72. rRTCCON=0x01;//RTC讀寫使能,BCD時(shí)鐘、計(jì)數(shù)器、無(wú)復(fù)位
            73. p_date->year=rBCDYEAR+0x2000;
            74. p_date->month=rBCDMON;
            75. p_date->day=rBCDDATE;
            76. p_date->week_day=rBCDDAY;//讀取日期時(shí)間
            77. p_date->hour=rBCDHOUR;
            78. p_date->minute=rBCDMIN;
            79. p_date->second=rBCDSEC;
            80. rRTCCON=0x00;//RTC讀寫禁止,BCD時(shí)鐘、計(jì)數(shù)器、無(wú)復(fù)位
            81. }
            82. /********************************
            83. *
            84. *TICK中斷初始化
            85. *
            86. *********************************/
            87. voidRTC_tickIRQ_Init(U8tick)
            88. {
            89. ClearPending(BIT_TICK);//清除標(biāo)志位
            90. EnableIrq(BIT_TICK);//使能中斷源
            91. pISR_TICK=(unsigned)RTC_tickHandler;//中斷函數(shù)入口地址
            92. rRTCCON=0x00;
            93. rTICNT=(tick&0x7f)|0x80;//使能中斷
            94. }
            95. /********************************
            96. *
            97. *設(shè)置鬧鐘日期、時(shí)間及其鬧鐘喚醒模式
            98. *
            99. *********************************/
            100. voidRTC_alarm_setdate(date*p_date,U8mode)
            101. {
            102. rRTCCON=0x01;
            103. rALMYEAR=p_date->year;
            104. rALMMON=p_date->month;
            105. rALMDATE=p_date->day;
            106. rALMHOUR=p_date->hour;
            107. rALMMIN=p_date->minute;
            108. rALMSEC=p_date->second;
            109. rRTCALM=mode;//RTC鬧鐘控制寄存器
            110. rRTCCON=0x00;
            111. ClearPending(BIT_RTC);//清除標(biāo)志位
            112. EnableIrq(BIT_RTC);//openRTCalarmINTERRUPT
            113. pISR_RTC=(unsigned)RTC_alarmHandler;
            114. }
            115. voidMain(void)
            116. {
            117. SelectFclk(2);//設(shè)置系統(tǒng)時(shí)鐘400M
            118. ChangeClockDivider(2,1);//設(shè)置分頻1:4:8
            119. CalcBusClk();//計(jì)算總線頻率
            120. rGPHCON&=~((3<<4)|(3<<6));
            121. rGPHCON|=(2<<4)|(2<<6);//GPH2--TXD[0];GPH3--RXD[0]
            122. rGPHUP=0x00;//使能上拉功能
            123. Uart_Init(0,115200);
            124. Uart_Select(0);
            125. rGPBCON&=~((3<<10)|(3<<12)|(3<<14)|(3<<16));//對(duì)GPBCON[10:17]清零
            126. rGPBCON|=((1<<10)|(1<<12)|(1<<14)|(1<<16));//設(shè)置GPB5~8為輸出
            127. rGPBUP&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));//設(shè)置GPB5~8的上拉功能
            128. rGPBDAT|=(1<<5)|(1<<6)|(1<<7)|(1<<8);//關(guān)閉LED
            129. Beep_Stop();//蜂鳴器停止發(fā)聲,蜂鳴器用作鬧鐘聲
            130. C_date.year=0x12;
            131. C_date.month=0x05;
            132. C_date.day=0x09;
            133. C_date.week_day=0x03;//設(shè)置當(dāng)前日期時(shí)間
            134. C_date.hour=0x12;
            135. C_date.minute=0x00;
            136. C_date.second=0x10;
            137. RTC_setdate(&C_date);
            138. C_date.second=0x20;
            139. RTC_alarm_setdate(&C_date,0x41);//0x41表示使能RTC鬧鐘,以及使能秒時(shí)鐘鬧鐘
            140. RTC_tickIRQ_Init(127);//設(shè)置1秒鐘tick一次
            141. Uart_Printf("n---實(shí)時(shí)時(shí)鐘測(cè)試程序---n");
            142. while(Uart_GetKey()!=ESC_KEY)
            143. {
            144. LED1_OFF;
            145. RTC_getdate(&C_date);
            146. if(alarmflag)
            147. {
            148. alarmflag=0;
            149. Uart_Printf("nRTCALARM%02x:%02x:%02xn",C_date.hour,C_date.minute,C_date.second);
            150. Beep_Freq_Set(1000);
            151. delay(5);
            152. Beep_Stop();
            153. }
            154. }
            155. }
            156. /********************************
            157. *
            158. *TICK中斷
            159. *
            160. *********************************/
            161. void__irqRTC_tickHandler(void)
            162. {
            163. ClearPending(BIT_TICK);
            164. LED1_ON;//刷新LED1
            165. Delay(500);
            166. RTC_getdate(&C_date);
            167. Uart_Printf("RTCTIME:%04x-%02x-%02x%s%02x:%02x:%02xn",C_date.year,C_date.month,C_date.day,week_num[C_date.week_day],C_date.hour,C_date.minute,C_date.second);
            168. }
            169. /********************************
            170. *
            171. *TICK中斷
            172. *
            173. *********************************/
            174. void__irqRTC_alarmHandler(void)
            175. {
            176. alarmflag=1;
            177. ClearPending(BIT_RTC);
            178. }




            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉