新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32單片機簡易定時器PWM輸出

        STM32單片機簡易定時器PWM輸出

        作者: 時間:2016-11-30 來源:網絡 收藏
        由于RCC->CFGR時鐘配置寄存器中 APB1設置為2分頻,所以TIM3就是其倍頻==72M

        上次我發表的STM32單片機自帶PWM輸出實驗大家可以參考學習:http://www.51hei.com/mcu/2123.html,這次是用定時器產生的pwm.
        //----------------------------------定時器-----------time.c-----------
        #include "time.h"

        void time_init(u16 arr,u16 psc)
        {
        RCC->APB1ENR|=1<<1; //TIM2定時器時鐘使能
        TIM3->ARR=arr; //設置重裝載值
        TIM3->PSC=psc; //設置分配系數
        TIM3->DIER|=1<<0; //允許更新
        TIM3->DIER|=1<<6; //觸發中斷使能
        TIM3->CR1|=1<<0; //使能定時器2
        MY_NVIC_Init(2,2,TIM3_IRQChannel,2); //設置定時器2中斷類別
        }

        //----------------time.h--------------
        #ifndef _time_h
        #define _time_h
        #include "sys.h"
        void time_init(u16 arr,u16 psc);
        #endif
        //----------------------按鍵-----key.c------------
        #include "key.h"

        void key_init(void)
        {
        RCC->APB2ENR|=1<<2; //PORTA時鐘使能
        GPIOA->CRH&=0x0f0fffff;
        GPIOA->CRH|=0x80800000; //設置為輸入
        GPIOA->ODR|=1<<15;
        GPIOA->ODR|=1<<13;

        }

        //-------------------key.h----------------
        #ifndef _key_h
        #define _key_h
        #include "sys.h"
        #define key1 PAin(13)
        #define key2 PAin(15)
        void key_init(void);

        #endif
        //-------------------LED---------led.c-------------
        #include "led.h"
        void led_init(void)
        {
        RCC->APB2ENR|=1<<2;
        RCC->APB2ENR|=1<<5; //使能PORTD時鐘
        GPIOA->CRH&=0xfffffff0;
        GPIOA->CRH|=0x00000003; //PA8推挽輸出
        GPIOD->CRL&=0xfffff0ff;
        GPIOD->CRL|=0x00000300; //PD2推挽輸出
        GPIOA->ODR|=1<<8;
        GPIOD->ODR|=1<<2;

        }
        //------------------led.h---------------------
        #ifndef _led_h
        #define _led_h
        #include "sys.h"

        #define LED0 PAout(8)
        #define LED1 PDout(2)

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 稻城县| 西林县| 西乌珠穆沁旗| 康平县| 宝应县| 英吉沙县| 藁城市| 綦江县| 洛阳市| 深水埗区| 岳池县| 石景山区| 安阳县| 威远县| 古蔺县| 山丹县| 凤山市| 临西县| 洪洞县| 乐昌市| 额敏县| 张家口市| 承德市| 无极县| 江华| 佛学| 浪卡子县| 安塞县| 蓬溪县| 固始县| 汨罗市| 蒙城县| 上栗县| 屏东市| 滨州市| 正宁县| 治县。| 东辽县| 汉川市| 南皮县| 萝北县|