新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430系統(tǒng)實(shí)時(shí)時(shí)鐘RTC學(xué)習(xí)日志

        MSP430系統(tǒng)實(shí)時(shí)時(shí)鐘RTC學(xué)習(xí)日志

        作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
        1通過設(shè)置RT0IP位,可以選擇使RT0PSIFG位用來生成間歇中斷。
        2在計(jì)數(shù)器模式,RT0PS位時(shí)鐘源,源自于ACLK或者SMCLK,也可以是基于ACLK或者SMCLK時(shí)鐘源的2分頻、4分頻、8分頻、16分頻、32分頻、64分頻、128分頻和256分頻作為時(shí)鐘源。
        3設(shè)置RT0PSIE位可以使能中斷。
        1通過設(shè)置RT1IP位,可以選擇地讓RT1PSIFG位用來生成間歇中斷。
        2在計(jì)數(shù)器模式下,RT1PS位時(shí)鐘源,源于ACLK、SMCLK或者是RT0PS位的輸出,也可以是以上時(shí)鐘源的2分頻、4分頻、8分頻、16分頻、32 分頻、64分頻、128分頻和256分頻后產(chǎn)生新的時(shí)鐘源作為時(shí)鐘。
        3設(shè)置RT1PSIE位可以使能中斷。
        一個(gè)簡單而安全讀取實(shí)時(shí)時(shí)鐘寄存器的方法是利用RTCRDYIFG中斷標(biāo)志位。置位RTCRDYIE位使能
        RTCRDYIFG中斷。一旦中斷使能,在RTCRDY位上升沿的時(shí)候?qū)?huì)產(chǎn)生中斷,致使RTCRDYIFG被置位。在這
        一點(diǎn)上,這一應(yīng)用幾乎有完整的一秒鐘安全地去讀取任一個(gè)實(shí)時(shí)時(shí)鐘寄存器。這一同步的處理方式防止在時(shí)間
        跳變的過程中讀取時(shí)間值。當(dāng)中斷得到響應(yīng)的時(shí)候,RTCRDYIFG會(huì)自動(dòng)復(fù)位,也可以軟件復(fù)位。
        在計(jì)數(shù)器模式下,RTCRDY位保持復(fù)位。可以不關(guān)心RTCRDYIE位,并且RTCRDYIFG維持復(fù)位。
        資料:
        http://www.jdzj.com/pic/Class347/Class410/20080804043437.html
        設(shè)置RTC時(shí)間:
        void main(void)
        {
        WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
        RTCCTL01 = RTCBCD+RTCHOLD+RTCMODE+RTCTEVIE+RTCAIE;
        // RTC enable, BCD mode,
        // alarm every Minute,
        // enable RTC interrupt
        // Init time
        RTCSEC = 0x00; // Set Seconds
        RTCMIN = 0x32; // Set Minutes
        RTCHOUR = 0x10; // Set Hours
        // Init date
        RTCDOW = 0x03; // Set DOW
        RTCDAY = 0x30; // Set Day
        RTCMON = 0x04; // Set Month
        RTCYEAR = 0x2008; // Set Year
        RTCCTL01 &= ~RTCHOLD; // Enable RTC
        P1DIR |= 0x01; // Set P1.0 to output direction
        __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
        }
        讀取RTC時(shí)間:
        //
        // //
        // 讀取RTC時(shí)鐘 //
        // //
        //
        unsigned long GetTime(void)
        {
        int hour,minute,second ;
        unsigned long time ;
        for(;RTCCTL01&RTCRDY;) _NOP() ; // 等待RTC有效
        for(;!(RTCCTL01&RTCRDY);) _NOP() ;
        hour = GetRTCHOUR() ;
        minute = GetRTCMIN() ;
        second = GetRTCSEC() ;
        time = (unsigned long)hour*1000000
        +(unsigned long)minute*1000
        +(unsigned long)second ;
        return time ;
        }

        上一頁 1 2 下一頁

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 和平区| 乌兰察布市| 南投县| 平山县| 永仁县| 双峰县| 沿河| 陆良县| 成武县| 普定县| 枣庄市| 策勒县| 沿河| 安西县| 天镇县| 崇义县| 南京市| 龙游县| 辽源市| 广西| 攀枝花市| 郁南县| 溧水县| 伊宁县| 清镇市| 抚松县| 类乌齐县| 洪湖市| 文化| 慈利县| 桃园市| 黄平县| 集贤县| 甘孜县| 本溪| 永清县| 雷州市| 沙湾县| 尉犁县| 乌拉特中旗| 潮州市|