• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Cortex M3S811學習筆記-TIMER32

    Cortex M3S811學習筆記-TIMER32

    作者: 時間:2012-09-14 來源:網(wǎng)絡 收藏
    今天把32位下的定時功能搞清楚了,首先32位下只有三個功能,32位單周期定時,32位多周期定時,和一個要外接時鐘的RTC。RTC 我們暫時用不上,先不管。

    把握大局,就是用來得到精確時間的一個定時器,單周期只跑一次,即使是你用TimerLoadSet(TIMERn_BASE,TIMER_A,要賦的值);他也不會跑了,是沒有用的。說跑一次就是一次; 跑一次還是N次是由定時器模式設置達到的:TIMERMODULE(TIMER2_BASE,TIMERS320);


    來說下具體如何操作

    1:使能定時器模塊,DEVICEEN(SYSCTL_PERIPH_TIMER2);

    2:設置模式 TIMERMODULE(TIMER2_BASE,TIMERS32);

    3: 裝值 TimerLoadSet(TIMER2_BASE,TIMER_A,要裝的值);

    4: 啟動定時器 TimerEnable(TIMER2_BASE,TIMER_A);


    以上就是完整過程,TIEMR2到0后自己動變?yōu)檠b載值。

    可以用查詢的方法,確定具體時間干什么事;

    if(TimerValueGet(TIEMR1_BASE,TIMERA)>多少){你要干什么事情};


    下面是用中斷的方法進入中斷,然后處理中斷程序,有中斷,就要寫中斷程序,麻煩;

    以下是具體步驟:

    1:同上,使能定時器模塊,DEVICEEN(SYSCTL_PERIPH_TIMER1)

    2; 同上,設置定時器模式,TIMERMODULE(TIMER1_BASE,TIMERS32);

    3:注意,這里就不同了,開定時器溢出中斷;與GPIOINTENABLE對比,

    TimerIntEnable(TIMER_BASE,TIMERAOUT);

    (TIMERAOUT名為溢出中斷,就是減到了0不能減了,就溢出了,需從頭開始)

    4:開總的TIMER中斷, IntEnable(INT_TIMER1A);

    5:開CPU的中斷, IntMasterEnable();


    6:同上裝初值 TimerLoadSet(TIMER1_BASE,TIMER_A,要裝的值)

    7:啟動定時器,開始計數(shù) TimerEnable(TIMER1_BASE,TIMER_A);

    最后一步:時間到了進中斷,你需要進處理中斷,也就是你要寫的中斷程序(切記,一定要修改中斷向量表中的名字和申明,在startup.s里面)



    關鍵詞: Cortex M3S811 TIMER32

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 青浦区| 盱眙县| 安宁市| 镶黄旗| 德江县| 陆河县| 柳河县| 临泽县| 麻阳| 泾源县| 清涧县| 曲水县| 黄平县| 建水县| 长沙县| 河南省| 仁布县| 十堰市| 晋宁县| 林西县| 大渡口区| 如东县| 洪雅县| 浮山县| 古丈县| 清丰县| 米易县| 武鸣县| 石屏县| 珠海市| 巴南区| 湖南省| 衡东县| 江阴市| 贵州省| 黄浦区| 炉霍县| 策勒县| 盱眙县| 当涂县| 南漳县|