• 歡迎光臨東莞市飛江電子科技有限公司官網!
    全國咨詢熱線

    13926563901

    18925580829

    飛江淘寶店鋪

    首頁>技術資料>ST單片機

    STM8003F3定時器2精準延時范例

    發布時間:2018-04-02   瀏覽量:

    /*    添加包含芯片的頭文件    */
    #include


    /*******************************************************************************
    **函數名稱:void LED3_Init()
    **功能描述:LED3->功能引腳初始化
    **入口參數:無
    **輸出:無
    *******************************************************************************/
    void LED3_Init()
    {
      PC_DDR_bit.DDR6 = 1;    //設置端口PC->6的輸入輸出方向寄存器為輸出方向
      PC_CR1_bit.C16 = 1;     //PC->6為推挽輸出
      PC_CR2_bit.C26 = 1;     //PC->6是輸出速度最快為10MHz
    }

    /*******************************************************************************
    **函數名稱:void TIM2_Init()
    **功能描述:定時器2參數初始化
    **入口參數:無
    **輸出:無
    *******************************************************************************/
    void TIM2_Init()
    {
      TIM2_PSCR = 0x00;     //定時器2預分頻數為 1 分頻,即定時器時鐘 = 系統時鐘 = 16MHz
      TIM2_ARRH = 0x3E;     //設置1毫秒時間自動重載 16000 = 0x3e80
      TIM2_ARRL = 0x80;     //

      TIM2_CNTRH = 0x00;    //清除計數寄存器
      TIM2_CNTRL = 0x00;    //
      TIM2_SR1 = 0x00;      //清除所有的中斷標志
     
    }

    /*******************************************************************************
    **函數名稱:void TIM2_DelayMs(unsigned int ms)
    **功能描述:定時器2參進行精確延時,最小為1毫秒,最大65535
    **入口參數:unsigned int ms     1=< ms <= 65535
    **輸出:無
    *******************************************************************************/
    void TIM2_DelayMs(unsigned int ms)
    {
       
        TIM2_CR1 = 0x81;        //啟動定時器2開始計數
        while(ms--)
        {
         
          while( !(TIM2_SR1 & 0x01)); //等待計數是否達到1毫秒
          TIM2_SR1 &= ~(0x01);  //計數完成1毫秒,清除相應的標志
        }
         TIM2_CR1 = 0x00;       //延時全部結束,關閉定時器2
    }

    /*    主函數    */
    int main(void)
    {
       CLK_CKDIVR = 0x00;     //CPUDIV = 1 HSIDIV = 1  內部時鐘 = 16Mhz
       LED3_Init();           //調用LED3初始化函數
       TIM2_Init();           //調用定時器2初始化函數
       while(1)
       {
          PC_ODR ^= 0x40;     //異或取反PC->6 ,使LED3進行周期性亮滅亮滅操作
          TIM2_DelayMs(1000); //調用定時器2進行精確延時1000毫秒
       }
        
    }

    來源于:www.syhtzly.com

    黑人粗大无码AV人妻一区