<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM9基礎(chǔ)教程lessen2—定時(shí)器

          ARM9基礎(chǔ)教程lessen2—定時(shí)器

          作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏


          ♥ 定時(shí)器計(jì)數(shù)觀察計(jì)數(shù)器(TCNTOn)
          定時(shí)器計(jì)數(shù)觀察計(jì)數(shù)器保存定時(shí)器計(jì)數(shù)器值(只讀)。

          ? S3C2440定時(shí)器操作
          定時(shí)器啟動(dòng)后,TCNTn開(kāi)始減一計(jì)數(shù),當(dāng)TCNTn 等于TCMPn時(shí),TOUTn 反轉(zhuǎn),TCNTn繼續(xù)減數(shù)。當(dāng)TCNTn= 0 時(shí),TOUTn 再次反轉(zhuǎn),并觸發(fā)中斷(中斷已經(jīng)使能)。若TCON 設(shè)為自動(dòng)加載,TNCTn/TCMPNn 的值被重裝。

          圖中步驟如下:
          1、使能自動(dòng)重載功能。設(shè)置TCNTBn為160,TCMPBn為110。設(shè)置手動(dòng)更新位且配置反相器位(開(kāi)/關(guān))。手動(dòng)更行位將TCNTBn和TCMPBn的值分別給TCNTn和TCMPn寄存器,然后設(shè)置TCNTBn=80和TCMPBn=40,決定下一個(gè)重載值;
          2、設(shè)置開(kāi)始位,手動(dòng)更新位為0,手動(dòng)更新關(guān)閉且自動(dòng)重載開(kāi)啟,定時(shí)器開(kāi)始倒數(shù)計(jì)數(shù);
          3、當(dāng)TCNTn的值和TCMPn的值相同,TOUTn的邏輯電平從低變高;
          4、當(dāng)TCNTn為0,中斷請(qǐng)求生成且TCNTBn的值裝載到一個(gè)臨時(shí)寄存器中。在下一個(gè)定時(shí)器周期,TCNTn會(huì)用該臨時(shí)寄存器的值重載;
          5、在中斷服務(wù)程序中,TCNTBn和TCMPBn為下一個(gè)周期分別設(shè)置為80和60;
          6、當(dāng)TCNTn的值和TCMPn的值相同,TOUTn的邏輯電平從低變高;
          7、當(dāng)TCNTn為0,TCNTn用TCNTBn的值自動(dòng)重載,并觸發(fā)中斷請(qǐng)求;
          8、在中斷服務(wù)程序中,自動(dòng)重載和自動(dòng)請(qǐng)求被設(shè)無(wú)效以停止定時(shí)器;
          10、就算TCNTn為0,因?yàn)樽詣?dòng)重載被設(shè)為無(wú)效,TCNTn不再重載且定時(shí)器停止;
          11、沒(méi)有其他的自動(dòng)請(qǐng)求生成。

          ? S3C2440定時(shí)器初始化
          以定時(shí)器0為例,啟動(dòng)定時(shí)器操作步驟大致如下:
          1、設(shè)置TCMPB0和TCNTB0寄存器;
          2、設(shè)置TCON寄存器,計(jì)數(shù)值進(jìn)行裝載;
          3、啟動(dòng)定時(shí)器;
          4、計(jì)數(shù)器重新被裝載。
          1. void Timer0_init()
          2. {
          3. TCFG0 = 119; //配置定時(shí)器0,1的預(yù)分頻值
          4. TCFG1 = 0x03; //配置定時(shí)器0分頻值
          5. TCNTB0 = 3125; //計(jì)數(shù)緩存寄存器
          6. TCMPB0 = 0; //比較緩存寄存器
          7. TCON |= (1<<1); //手動(dòng)更新位且配置反相器位(開(kāi)/關(guān))(手動(dòng)更行位將TCNTBn和TCMPBn的值分別給TCNTn和TCMPn寄存器)
          8. TCON = 0x09; //定時(shí)器使能并自動(dòng)重載
          9. }
          復(fù)制代碼
          ? 定時(shí)器報(bào)警實(shí)驗(yàn)
          ♥ 實(shí)驗(yàn)設(shè)備
          硬件: PC機(jī) 一臺(tái)
          YX-AIO嵌入式綜合創(chuàng)新設(shè)計(jì)平臺(tái) 一臺(tái)
          ARM9核心板 一塊
          軟件: Windows操作系統(tǒng),ADS1.2集成開(kāi)發(fā)環(huán)境,H-JTAG下載環(huán)境

          ♥ 實(shí)驗(yàn)內(nèi)容
          使用定時(shí)器延時(shí)方式控制YX-AIO嵌入式綜合創(chuàng)新設(shè)計(jì)平臺(tái)上的蜂鳴器報(bào)警。

          ♥ 實(shí)驗(yàn)步驟
          ① 在ADS開(kāi)發(fā)環(huán)境中使用ARM9_S3C2440工程模版創(chuàng)建一個(gè)工程,并將程序代碼添加到該工程;
          ② 在ADS開(kāi)發(fā)環(huán)境中編譯鏈接并生成目標(biāo)文件;
          ③ 將JTAG下載器連接YX-AIO嵌入式綜合創(chuàng)新設(shè)計(jì)平臺(tái),并將該平臺(tái)通電;
          ④ 開(kāi)啟H-JTAG軟件檢測(cè)處理器與NOR-Flash;
          ⑤ 使用H-JTAG軟件將目標(biāo)文件(.bin)下載到Y(jié)X-AIO嵌入式綜合創(chuàng)新設(shè)計(jì)平臺(tái)上;
          ⑥ 復(fù)位平臺(tái)。

          源代碼:
          1. voidDelayMS(U32dly)
          2. {
          3. U32 time_val;
          4. rTCFG0 = 3; //配置定時(shí)器0,1的預(yù)分頻值
          5. rTCFG1 = 0<<4; //配置定時(shí)器1分頻值
          6. time_val = PCLK/ (3+1) / 2 / 1000 - 1; // 1ms = PCLK / prescaler / divider / 1000
          7. rTCNTB1 = time_val; //計(jì)數(shù)緩存寄存器
          8. rTCMPB1 = time_val>>1; // 50%
          9. rTCON &= ~(0xf<<8); //手動(dòng)更新位且配置反相器位(開(kāi)/關(guān))
          10. rTCON |= 0xb<<8; //定時(shí)器使能并自動(dòng)重載
          11. rTCON &= ~(2<<8); //clear manual update bit
          12. while(dly--)
          13. {
          14. while(rTCNTO1>=time_val>>1);
          15. while(rTCNTO1>1);
          16. }
          17. }
          18. void Main(void)
          19. {
          20. //----------------添加自己的代碼-------------------
          21. rGPACON &= ~(1<<16);
          22. while (1)
          23. {
          24. rGPADAT |= (1<<16);
          25. DelayMS(1000);
          26. rGPADAT &= ~(1<<16);
          27. DelayMS(500);
          28. }
          29. }


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();