新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于stm32的定時器主從模式概念

        關于stm32的定時器主從模式概念

        作者: 時間:2016-11-30 來源:網絡 收藏
        STM32的每個定時器都可以由另一個定時器觸發啟動定時器一般是通過軟件設置而啟動,STM32的每個定時器也可以通過外部信號觸發而啟動,還可以通過另外一個定時器的某一個條件被觸發而啟動.這里所謂某一個條件可以是定時到時、定時器超時、比較成功等許多條件.這種通過一個定時器觸發另一個定時器的工作方式稱為定時器的同步,發出觸發信號的定時器工作于主模式,接受觸發信號而啟動的定時器工作于從模式

        以下程序是從官方的修改而來
        修改為寄存器版(主定時器:TIM2;從定時器:TIM3,省略了TIM4):

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

        /*從模式:TIM2主模式,TIM3從模式*/

        void TIM_Parallel_Synchro(void)

        {

        /* System Clocks Configuration */

        RCC->APB2ENR|=1<<2; //使能PORTA時鐘

        RCC->APB1ENR|=1<<0; //TIM2時鐘使能

        RCC->APB1ENR|=1<<1; //TIM3時鐘使能

        /* GPIO Configuration */

        GPIOA->CRL&=0XFFFFFFF0;//PA0輸出

        GPIOA->CRL|=0X0000000B;//50Hz,復用功能輸出

        GPIOA->ODR|=1<<0; //PA0上拉

        GPIOA->CRL&=0XF0FFFFFF;//PA6輸出

        GPIOA->CRL|=0X0B000000;//50Hz,復用功能輸出

        GPIOA->ODR|=1<<6; //PA6上拉

        /* Timebaseconfiguration */

        TIM2->ARR=255;//設定計數器自動重裝值

        TIM2->PSC=0 ;//預分頻器分頻

        TIM2->CR1 &=~(3<<8);// 選擇時鐘分頻

        TIM2->CR1 &=~(3<<5);// 選擇計數模

        TIM3->ARR=9; //設定計數器自動重裝值

        TIM3->PSC=0 ;//預分頻器分頻

        TIM3->CR1 &=~(3<<8);// 選擇時鐘分頻

        TIM3->CR1 &=~(3<<5);// 選擇計數模式

        /* Master Configuration in PWM1 Mode */

        TIM2->CCMR1|=6<<4; //輸出比較模式

        TIM2->CCER |=1<<0; //OC1 輸出使能

        TIM2->CCR1 =64; //捕獲比較寄存器(占空比)

        TIM2->CCER &=~(1<<1); //OC1 輸出極性

        /* Select the Master Slave Mode */

        TIM2->SMCR|=1<<7;//選擇主從模式

        /* Master Mode selection */

        TIM2->CR2 |=2<<4;// 主模式選擇

        /* Slaves Configuration: PWM1 Mode */

        TIM3->CCMR1|=6<<4; //輸出比較模式

        TIM3->CCER |=1<<0; //OC1 輸出使能

        TIM3->CCR1 =3; //捕獲比較寄存器(占空比)

        TIM3->CCER &=~(1<<1); //OC1 輸出極性

        /* Slave Mode selection: TIM3 */

        TIM3->SMCR|=5<<0;//從模式選擇

        TIM3->SMCR|=1<<4;//觸發選擇

        /* TIM enable counter */

        TIM3->CR1|=0x01; //CEN=1,使能定時器

        TIM2->CR1|=0x01; //CEN=1,使能定時器

        }
        仿真結果:

        但是仿真結果并不是庫函數注釋中描述的那樣

        The TIMxCLK is fixed to 72 MHz, the TIM2 counter clock is 72 MHz.
        The Master Timer TIM2 is running at 281.250 KHz and the duty cycle is equal to 25%
        The TIM3 is running:
        - At (TIM2 frequency)/ (TIM3 period + 1) = 28.125 KHz and a duty cycle
        equal to TIM3_CCR1/(TIM3_ARR + 1) = 30%

        如果修改:TIM3->SMCR|=5<<0;//從模式選擇

        為:TIM3->SMCR|=7<<0;//從模式選擇

        仿真結果與庫函數描述相同。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 龙泉市| 牙克石市| 林西县| 丹棱县| 仲巴县| 米脂县| 永和县| 玉龙| 沂水县| 湘潭县| 石嘴山市| 罗平县| 句容市| 大余县| 阳西县| 郸城县| 固阳县| 古交市| 卓尼县| 新龙县| 芒康县| 射洪县| 东莞市| 永丰县| 花莲县| 资兴市| 广饶县| 葫芦岛市| 元阳县| 三河市| 两当县| 夏津县| 锡林郭勒盟| 灯塔市| 禹州市| 织金县| 榆中县| 山西省| 黑龙江省| 成武县| 巴东县|