在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            STM32_TIM3_PWM_MDK

            作者: 時(shí)間:2016-12-03 來(lái)源:網(wǎng)絡(luò) 收藏
            最近要驅(qū)動(dòng)電機(jī),看了下PWM的輸出,有所總結(jié),這次貼上。

            stm32 的高級(jí)定時(shí)器 比較復(fù)雜,看了下例程,設(shè)置的東西太多了,就沒(méi)有碰,

            本文引用地址:http://www.biyoush.com/article/201612/325147.htm

            看了通用定時(shí)器還比較可愛(ài),什么都剛剛好夠用,就用它做了,這次用的是TIM3定時(shí)器3。

            硬件平臺(tái)用的是stm32f103vet6 100腳的。

            由于手頭沒(méi)有示波器,所以用軟件仿真,先上一張仿真圖:


            下面是代碼部分Timer3.c
            C語(yǔ)言:Codee#20528
            #include "Timer3.h"
            /*******************************************************************************
            * Function Name : None
            * Description : 定時(shí)器3 PWM輸出占空比全局變量
            * Input : None
            * Output : None
            * Return : None
            *******************************************************************************/
            unsignedintT3CH1_DC=50;// 定時(shí)器3通道1占空比 全局變量
            unsignedintT3CH2_DC=50;// 定時(shí)器3通道2占空比 全局變量
            unsignedintT3CH3_DC=50;// 定時(shí)器3通道3占空比 全局變量
            unsignedintT3CH4_DC=50;// 定時(shí)器3通道4占空比 全局變量

            /*******************************************************************************
            * Function Name : Timer3_GPIO_Configuration
            * Description : 設(shè)置定時(shí)器3 PWM輸出引腳
            * Input : None
            * Output : None
            * Return : None
            *******************************************************************************/
            voidTimer3_GPIO_Configuration(void)
            {
            GPIO_InitTypeDefGPIO_InitStructure_TIMER3PWM_PORTA;
            GPIO_InitTypeDefGPIO_InitStructure_TIMER3PWM_PORTB;

            GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
            GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Speed=GPIO_Speed_50MHz;
            GPIO_InitStructure_TIMER3PWM_PORTA.GPIO_Mode=GPIO_Mode_AF_PP;
            GPIO_Init(GPIOA,&GPIO_InitStructure_TIMER3PWM_PORTA);

            GPIO_InitStructure_TIMER3PWM_PORTB.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
            GPIO_InitStructure_TIMER3PWM_PORTB.GPIO_Speed=GPIO_Speed_50MHz;
            GPIO_InitStructure_TIMER3PWM_PORTB.GPIO_Mode=GPIO_Mode_AF_PP;
            GPIO_Init(GPIOB,&GPIO_InitStructure_TIMER3PWM_PORTB);
            }

            /*******************************************************************************
            * Function Name : Timer3_BASE_Configuration 注意事項(xiàng):
            * Description : 設(shè)置基本參數(shù) 在 TIM_Period 里的5000 為一個(gè)重要常量
            * Input : None 在下面的 初始化PWM信號(hào) 和 調(diào)節(jié)PWM占空比 函數(shù)里都用到
            * Output : None 如果要調(diào)整PWM輸出頻率,那上面提到的兩個(gè)函數(shù)里都要調(diào)節(jié)!
            * Return : None
            *******************************************************************************/
            voidTimer3_BASE_Configuration(void)
            {
            TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
            TIM_DeInit(TIM3);//重新將Timer設(shè)置為缺省值
            TIM_InternalClockConfig(TIM3);//采用內(nèi)部時(shí)鐘給TIM3提供時(shí)鐘源
            TIM_TimeBaseStructure.TIM_Prescaler=720;
            //預(yù)分頻系數(shù)為72,即不進(jìn)行預(yù)分頻,此時(shí)TIMER的頻率為1MHz
            TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV4;//設(shè)置時(shí)鐘分割
            TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//設(shè)置計(jì)數(shù)器模式為向上計(jì)數(shù)模
            TIM_TimeBaseStructure.TIM_Period=5000-1;
            //設(shè)置計(jì)數(shù)溢出大小,每計(jì)5000個(gè)數(shù)就產(chǎn)生一個(gè)更新事件,即PWM的輸出頻率為50Hz,Fre = 20ms
            TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//將配置應(yīng)用到TIM3中
            }

            /*******************************************************************************
            * Function Name : Timer3_PWN_Configuration
            * Description : 設(shè)置PWM參數(shù)
            * Input : Dutyfactor : 占空比 (0~100)
            * Output : None
            * Return : None
            *******************************************************************************/
            voidTimer3_PWN_Configuration(void)
            {
            TIM_OCInitTypeDefTIM_OCInitStructure;

            TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//PWM方式 分1,2

            /*************************** 通道1 ********************************/
            TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//PWM功能使能
            TIM_OCInitStructure.TIM_Pulse=(T3CH1_DC*5000)/100;//寫(xiě)比較值(占空比輸入)
            TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//設(shè)置正反相位,是先高電平還是先低電平
            TIM_OC1Init(TIM3,&TIM_OCInitStructure);
            TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);

            TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;

            /*************************** 通道2 ********************************/
            TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
            TIM_OCInitStructure.TIM_Pulse=(T3CH2_DC*5000)/100;
            TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
            TIM_OC2Init(TIM3,&TIM_OCInitStructure);
            TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);

            /*************************** 通道3 ********************************/
            TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
            TIM_OCInitStructure.TIM_Pulse=(T3CH3_DC*5000)/100;
            TIM_OC3Init(TIM3,&TIM_OCInitStructure);
            TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);

            /*************************** 通道4 ********************************/
            TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
            TIM_OCInitStructure.TIM_Pulse=(T3CH4_DC*5000)/100;
            TIM_OC4Init(TIM3,&TIM_OCInitStructure);
            TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable);

            TIM_ARRPreloadConfig(TIM3,ENABLE);
            TIM_Cmd(TIM3,ENABLE);
            }

            /*******************************************************************************
            * Function Name : TIM3PWM_4Channel_Configuration
            * Description : 初始化定時(shí)器3,4個(gè)通道的PWM輸出,占空比初始化為50%
            * Input : None
            * Output : None
            * Return : None
            *******************************************************************************/
            voidTIM3PWM_4Channel_Configuration(void)
            {
            Timer3_GPIO_Configuration();
            Timer3_BASE_Configuration();
            Timer3_PWN_Configuration();
            }

            /*******************************************************************************
            * Function Name : Adjust_DutyCycle
            * Description : 定時(shí)器3調(diào)節(jié)4個(gè)通道的占空比
            * Input : CHx : 輸出通道 DC : 調(diào)節(jié)到多少量
            * Output : None
            * Return : None
            *******************************************************************************/
            voidAdjust_TIM3DutyCycle(unsignedcharCHx,unsignedintDC)
            {
            switch(CHx)
            {
            caseCH1:
            {
            TIM_SetCompare1(TIM3,((DC*5000)/100) );
            break;
            }
            caseCH2:
            {
            TIM_SetCompare2(TIM3,((DC*5000)/100) );
            break;
            }
            caseCH3:
            {
            TIM_SetCompare3(TIM3,((DC*5000)/100) );
            break;
            }
            caseCH4:
            {
            TIM_SetCompare4(TIM3,((DC*5000)/100) );
            break;
            }
            default:
            {break;}
            }
            }



            關(guān)鍵詞: STM32TIM3PWMMD

            評(píng)論


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

            關(guān)閉