新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM8s--定時器(time4)

        STM8s--定時器(time4)

        作者: 時間:2016-11-26 來源:網絡 收藏
        TIME4:

        ● 8位向上計數的自動重載計數器;
        ● 3位可編程的預分配器(可在 運行中修改),提供1, 2, 4, 8, 16, 32, 64 和128 這8種分頻比例。
        中斷產生
        – 在計數器更新時:計數器溢出。

        本文引用地址:http://www.104case.com/article/201611/322083.htm

        幾個相關的寄存器;

        控制寄存器1 (TIMx_CR1)

        控制寄存器2 (TIMx_CR2)[注意:TIM4沒有該寄存器]

        事件產生寄存器(TIMx_EGR)

        狀態寄存器1 (TIMx_SR1)

        中斷使能寄存器(TIMx_IER)

        自動重裝載寄存器(TIMx_ARR)

        預分頻寄存器(TIMx_PSCR)計數器時鐘頻率fCK_CNT=fCK_PSC/ 2(PSC[2:0])

        計數器(TIMx_CNTR){TIMx_CNTRL TIMx_CNTRH}

        詳細內容見:STM8S數據手冊

        8位定時器

        main()

        {

        //首先初始化GPIO

        PD_DDR=0x08;

        PD_CR1=0x08;//將PD3設置成推挽輸出

        PD_CR2=0x00;

        //然后初始化定時器4

        TIM4_IER=0x00;//禁止中斷

        TIM4_EGR=0x01;//允許產生更新事件

        TIM4_PSCR=0x07;//計數器時鐘=主時鐘/128=2MHZ/128

        //相當于計數器周期為64uS

        TIM4_ARR=255;//設定重裝載時的寄存器值,255是最大值

        TIM4_CNTR=255;//設定計數器的初值

        //定時周期=(ARR+1)*64=16320uS

        TIM4_CR1=0x01;//b0=1,允許計數器工作

        //b1=0,允許更新

        //設置控制器,啟動定時器

        TIM4_IER=0x01;//允許更新中斷

        _asm("rim");//允許CPU全局中斷

        while(1)//進入無限循環

        {

        }

        }

        @far@interruptvoidTIM4_UPD_OVF_IRQHandler(void)

        {

        TIM4_SR1=0x00;//清除更新標志

        PD_ODR=PD_ODR^0x08;//LED驅動信號取反

        //LED閃爍頻率=2MHZ/128/255/2=30.63

        }

        0

        16位定時器:

        main()

        {

        //首先初始化GPIO

        PD_DDR=0x08;

        PD_CR1=0x08;//將PD3設置成推挽輸出

        PD_CR2=0x00;

        //然后初始化定時器4

        TIM2_IER=0x00;//禁止中斷

        TIM2_EGR=0x01;//允許產生更新事件

        TIM2_PSCR=0x01;//計數器時鐘=主時鐘/128=2MHZ/2

        //相當于計數器周期為1uS

        //設定重裝時的寄存器值

        //注意必須保證先寫入高8位,再寫入低8位

        TIM2_ARRH=0xEA;//設定重裝載時的寄存器的高8位

        TIM2_ARRL=0x60;

        TIM2_CNTRH=0xEA;//設定計數器的初值

        TIM2_CNTRL=0x60;

        //定時周期=1*60000=60000uS=60ms

        TIM2_CR1=0x01;//b0=1,允許計數器工作

        //b1=0,允許更新

        //設置控制器,啟動定時器

        TIM2_IER=0x01;//允許更新中斷

        _asm("rim");//允許CPU全局中斷

        while(1)//進入無限循環

        {

        }

        }

        //函數功能:定時器4的更新中斷服務程序

        //輸入參數:無

        //輸出參數:無

        //值:無

        @far@interruptvoidTIM2_UPD_IRQHandler(void)

        {

        TIM2_SR1=0x00;//清除更新標志

        PD_ODR=PD_ODR^0x08;//LED驅動信號取反

        //LED閃爍頻率=2MHZ/2/60000/2=8.3

        }



        關鍵詞: STM8s定時器time

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄯善县| 招远市| 天柱县| 井冈山市| 瑞金市| 二连浩特市| 斗六市| 清镇市| 裕民县| 历史| 安庆市| 进贤县| 天峨县| 龙川县| 仪陇县| 合山市| 黎川县| 濉溪县| 元江| 花莲市| 洛扎县| 莲花县| 无锡市| 文化| 隆子县| 绥芬河市| 友谊县| 云龙县| 漳平市| 白银市| 宜黄县| 冕宁县| 沧州市| 龙门县| 和政县| 威宁| 宽甸| 方正县| 汤原县| 定襄县| 曲周县|