在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32單片機(jī)簡(jiǎn)易定時(shí)器PWM輸出

            STM32單片機(jī)簡(jiǎn)易定時(shí)器PWM輸出

            作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

            void led_init(void);

            #endif

            //------------------------主函數(shù)-----------test.c-----------
            #include
            #include "sys.h"
            #include "delay.h"
            #include "usart.h"
            #include "led.h"
            #include "key.h"
            #include "time.h"

            char pwm; //pwm增減量
            char cnt; //pwm時(shí)間變量

            //-----------------------pwm增量按鍵----------------
            void key1_scan()
            {
            static u8 i,j;
            if(key1==0)
            {
            if(i==0)
            {
            j++;
            if(j>3)
            {
            i=1;j=0;
            pwm+=5;
            if(pwm>100)pwm=0;
            }
            }
            }
            else
            {
            i=j=0;
            }
            }

            //--------------------pwm減量按鍵--------------------
            void key2_scan()
            {
            static u8 i,j;
            if(key2==0)
            {
            if(i==0)
            {
            j++;
            if(j>3)
            {
            i=1;j=0;
            pwm-=5;
            if(pwm<10)pwm=0;
            }
            }
            }
            else
            {
            i=j=0;
            }
            }

            void TIM3_IRQHandler(void) //定時(shí)器2中斷函數(shù)
            {
            if(TIM3->SR&0x0001)
            {
            cnt++;
            if(cnt>100)cnt=0;
            if(cnt>pwm) //LED0作為pwm 輸出指示
            {
            LED0=0;
            }
            else
            {
            LED0=1;
            }
            }
            TIM3->SR&=~(1<<0); //清除中斷標(biāo)志位
            }


            int main(void)
            {
            u16 i,t;
            Stm32_Clock_Init(9);
            delay_init(72);
            uart_init(72,9600);
            led_init();
            key_init();
            time_init(3600,1); //產(chǎn)生10K頻率 pwm只是~~100HZ 由于100分頻
            while(1)
            {
            key1_scan();
            key2_scan();
            t++;
            if(t>60000)
            {
            i++;
            if(i>11)
            {
            LED1=!LED1; //系統(tǒng)運(yùn)行指示約1秒閃爍一次
            i=0;
            }
            t=0;
            }

            }
            }

            //--------------------------------關(guān)于定時(shí)器溢出時(shí)間計(jì)算--------------------------
            1)TIM3時(shí)鐘使能。
            這里我們通過APB1ENR的第1位來設(shè)置TIM3的時(shí)鐘,因?yàn)镾tm32_Clock_Init函數(shù)里面把APB1的分頻設(shè)置為2了,所以我們的TIM3時(shí)鐘就是APB1時(shí)鐘的2被,等于系統(tǒng)時(shí)鐘。(72M)

            Tout= (arr*(psc+1))/Tclk;
            其中:
            Tclk:TIM3的輸入時(shí)鐘頻率(單位為Khz)。
            Tout:TIM3溢出時(shí)間(單位為ms)。

            Tout=(3600*(1+1))/72M=0.1ms

            //------------------------------系統(tǒng)時(shí)鐘初始化函數(shù)對(duì)于定時(shí)器TIM3時(shí)鐘簡(jiǎn)易分析-----------------
            void Stm32_Clock_Init(u8 PLL)
            {
            unsigned char temp=0;
            MYRCC_DeInit(); //復(fù)位并配置向量表
            RCC->CR|=0x00010000; //外部高速時(shí)鐘使能HSEON
            while(!(RCC->CR>>17));//等待外部時(shí)鐘就緒
            RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
            PLL-=2;//抵消2個(gè)單位
            RCC->CFGR|=PLL<<18; //設(shè)置PLL值 2~16
            RCC->CFGR|=1<<16; //PLLSRC ON
            FLASH->ACR|=0x32; //FLASH 2個(gè)延時(shí)周期

            RCC->CR|=0x01000000; //PLLON
            while(!(RCC->CR>>25));//等待PLL鎖定
            RCC->CFGR|=0x00000002;//PLL作為系統(tǒng)時(shí)鐘
            while(temp!=0x02) //等待PLL作為系統(tǒng)時(shí)鐘設(shè)置成功
            {
            temp=RCC->CFGR>>2;
            temp&=0x03;
            }
            }


            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: STM32單片機(jī)定時(shí)器PWM輸

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉