新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Cortex M3S811學(xué)習(xí)筆記-TIMER32

        Cortex M3S811學(xué)習(xí)筆記-TIMER32

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

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


        來(lái)說(shuō)下具體如何操作

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

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

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

        4: 啟動(dòng)定時(shí)器 TimerEnable(TIMER2_BASE,TIMER_A);


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

        可以用查詢(xún)的方法,確定具體時(shí)間干什么事;

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


        下面是用中斷的方法進(jìn)入中斷,然后處理中斷程序,有中斷,就要寫(xiě)中斷程序,麻煩;

        以下是具體步驟:

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

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

        3:注意,這里就不同了,開(kāi)定時(shí)器溢出中斷;與GPIOINTENABLE對(duì)比,

        TimerIntEnable(TIMER_BASE,TIMERAOUT);

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

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

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


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

        7:?jiǎn)?dòng)定時(shí)器,開(kāi)始計(jì)數(shù) TimerEnable(TIMER1_BASE,TIMER_A);

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



        關(guān)鍵詞: Cortex M3S811 TIMER32

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 义乌市| 五常市| 吴桥县| 内江市| 兖州市| 朝阳市| 广南县| 云林县| 青浦区| 平原县| 丹寨县| 同心县| 克山县| 莆田市| 上林县| 沾化县| 天等县| 封开县| 吉木萨尔县| 庆城县| 黄陵县| 化州市| 玉山县| 乌海市| 资阳市| 汤原县| 民丰县| 达州市| 江阴市| 永胜县| 杨浦区| 昌宁县| 呼和浩特市| 洛扎县| 康平县| 乐平市| 桂东县| 广南县| 白河县| 页游| 赤城县|