<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=13) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> ## **定時器3 簡介** 定時器3是一個8位的定時器,計數范圍是0~255。在上節課中,我們采用了查詢的方式來定時,本節課帶領讀者會采用中斷的方式。 <br/> ## **相關寄存器** ![](https://img.kancloud.cn/2d/e6/2de6857ed311d48095d97606140932bb_1108x1090.png =600x) ![](https://img.kancloud.cn/d8/2b/d82b510f658ca587559370659124719f_1110x1332.png =600x) <br/> ## **寄存器配置** ``` 1.T3CTL?=?0xE8;???//?Bit[7:5]??:???111?->?128分頻;?? 2. //?Bit3?????:?1?->?打開溢出中斷?? 3. //?Bit[1:0]??:??00?->?自由計數,反復從0到255?? 4.T3IE?=?1;???????//?使能定時器3中斷?? 5.EA??=?1;????????//?開啟中斷總開關?? 6.T3CTL?|=?0x10;??//?啟動定時器 ``` <br/> ## **定時原理** 定時器3的系統時鐘頻率為:16 MHz的128分頻,即16000000/128Hz * 由上節課的公式1可以得出,其時鐘周期T=128/16000000 * 在計時5秒的情況下,由上節課的公式2可以得出,計數值 N=5/(128/16000000) = 625000。 由此可以得出,定時器3在系統時鐘頻率的16MHz的128分頻狀態下,計數625000次所需的時間5秒。 #### **處理溢出** 定時器3是8位計數器,每溢出1次計數256次,因此其在定時5秒后的溢出次數為:625000 / 256 = 2441.4,即2441次。 <br/> ## **源碼分析** ``` void main() { initLed(); initTimer3(); while(1) { } } ``` ### 定時器3初始化函數的工作內容 * 128分頻 * 開溢出中斷 * 自由計數 * 中斷使能 * 最后啟動定時器 ``` static void initTimer3(void) { T3CTL = 0xE8; // Tick frequency/128 // Overflow interrupt is enabled // Free running, repeatedly count from 0x00 to 0xFF T3IE = 1; // Enable timer3 interrupt EA = 1; // Enable Interrupts T3CTL |= 0x10; // Start timer } ``` ### 定時器3中斷服務函數 * 聲明中斷向量T3_VECTOR * 溢出計數2441次,溢出2441次時長約等于5秒 * 每隔5秒調試輸出并反轉LED ``` /* * Timer3 interrupt service function */ #pragma vector = T3_VECTOR __interrupt void Timer3_ISR(void) { // ~5s if (++counter_g == 2441) { counter_g = 0; DEBUG_LOG("Timer3 timeout -> 5-seconds!\r\n"); LED = (LED == LED_ON)?LED_OFF : LED_ON; } } ``` <br/> ## **仿真調試** >[danger] 在學習本節課前,需要先掌握基本的程序下載及仿真操作,參考:[程序下載及仿真](2482302) 打開本節課配套的工程并且編譯通過后,進行仿真調試,運行結果如下圖所示: ![](https://img.kancloud.cn/83/90/8390cf2e5c9a91168c85394a0f858115_530x258.png =400x) <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看