新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32自帶PWM輸出實驗

        STM32自帶PWM輸出實驗

        作者: 時間:2016-11-30 來源:網絡 收藏
        #include
        #include "sys.h"
        #include "delay.h"
        #include "usart.h"

        #define LED0_val TIM3->CCR2

        void PWM_init(u16 arr,u16 psc)
        {
        RCC->APB1ENR|=1<<1; //TIM3時鐘使能
        GPIOA->CRH&=0xfffffff0; //PA8
        GPIOA->CRH|=0x00000004; //PA8 浮空輸入
        GPIOA->CRL&=0x0fffffff;
        GPIOA->CRL|=0xB0000000; //PA7復用輸出
        GPIOA->ODR|=1<<7; //PA7上啦
        TIM3->ARR=arr; //設置重裝載值
        TIM3->PSC=psc; //設置預分頻系數
        TIM3->CCMR1|=7<<12; //CH2 PWM2模式
        TIM3->CCMR1|=1<<11; //CH2預裝載使能
        TIM3->CCER|=1<<4; //OC2輸出使能
        TIM3->CR1|=0x0080; //ARPE使能
        TIM3->CR1|=0x01; //使能定時器3
        }

        int main(void)
        {
        u16 pwm=0;
        u8 dir=1;
        Stm32_Clock_Init(9);
        delay_init(72);
        uart_init(72,9600);
        PWM_init(900,0); //頻率72000/900 80KHZ

        while(1)
        {
        delay_ms(10);
        if(dir)pwm++;
        else pwm--;
        if(pwm>300)dir=0;
        if(pwm==0)dir=1;
        LED0_val=pwm;
        }
        }


        void PWM_init(u16 arr,u16 psc)函數解析:
        GPIOA->CRL&=0x0fffffff;
        GPIOA->CRL|=0xB0000000; //PA7復用輸出 因為TIM3_CH2 通道是I/O口復用的形式連接到PA7上的
        TIM3->ARR; //設置自動重裝載值
        TIM3->PSC; //設置分頻系數
        TIM3->CCMR1|=7<<12; //CH2 PWM2模式
        CCMR1用于控制CH1 和CH2通道






        由于7=0x111;

        所以OC1M[2:0]為

        本文引用地址:http://www.104case.com/article/201611/323885.htm
        111:PWM模式2- 在向上計數時,一旦TIMx_CNTTIMx_CCR1時通道1為有效電平,否則為無效電平。
        默認為高電平有效

        數模式是 TIM3_CR1 中 位4決定
        位4 0:計數器向上計數; 1:計數器向下計數。
        默認為向上計數模式
        定時器的值從0-----> TIM->ARR 到自動裝載值 循環變化
        //---------------------------------------------------------------------------------------
        TIM3->CCMR1|=1<<11; //CH2預裝載使能
        TIM3->CCER|=1<<4; //OC2輸出使能


        CC2E:輸入/捕獲1輸出使能 (Capture/Compare 1 output enable)
        CC2通道配置為輸出: 0: 關閉- OC1禁止輸出。 1: 開啟- OC2信號輸出到對應的輸出引腳。
        CC2通道配置為輸入: 該位決定了計數器的值是否能捕獲入TIMx_CCR1寄存器。 0:捕獲禁止; 0:捕獲使能。

        TIM3->CR1|=0x0080; //ARPE使能

        ARPE:自動重裝載預裝載允許位 (Auto-reload preload enable)
        0:TIMx_ARR寄存器沒有緩沖; 1:TIMx_ARR寄存器被裝入緩沖器。

        //



        關鍵詞: STM32PWM輸出實

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 峨眉山市| 敦化市| 双辽市| 大同县| 二手房| 许昌市| 天气| 廊坊市| 蕲春县| 成武县| 从江县| 当阳市| 十堰市| 建阳市| 双鸭山市| 中阳县| 康乐县| 长沙市| 无为县| 河北省| 杂多县| 萍乡市| 达日县| 桦甸市| 柳江县| 太原市| 巴南区| 四平市| 陆丰市| 车险| 资阳市| 平安县| 泰宁县| 龙门县| 彰化市| 武强县| 泰来县| 巴林右旗| 长丰县| 磐安县| 方山县|