在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32單片機(jī)TIM3蜂鳴器播放音樂

            STM32單片機(jī)TIM3蜂鳴器播放音樂

            作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            下面這段代碼有個(gè)小bug,軟件仿真PORTB.5 beep 波形正常,如下圖所示


            但下到我的開發(fā)板上,beep沒有聲音,若看到此程序,有興趣的朋友可以幫忙驗(yàn)證一下,歡迎一起探討!

            #include // STM32F10x Library Definitions
            #include "STM32_Init.h" // STM32 Initialization
            #include
            #define uchar unsigned char
            bool beep;
            uchar k;
            long reload_time=0,time=0;
            long get_time;
            uchar sszymmh[]={
            6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,
            6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,
            6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,
            5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,
            2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0 };
            // 音階頻率表 高八位
            uchar FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
            0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
            0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
            0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;
            // 音階頻率表 低八位
            uchar FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
            0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
            0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
            0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};
            void RCC_Configuration(void)
            {
            ErrorStatus HSEStartUpStatus;
            //使能外部晶振
            RCC_HSEConfig(RCC_HSE_ON);
            //等待外部晶振穩(wěn)定
            HSEStartUpStatus = RCC_WaitForHSEStartUp();
            //如果外部晶振啟動(dòng)成功,則進(jìn)行下一步操作
            if(HSEStartUpStatus==SUCCESS)
            {
            //設(shè)置HCLK(AHB時(shí)鐘)=SYSCLK
            RCC_HCLKConfig(RCC_SYSCLK_Div1);
            //PCLK1(APB1) = HCLK/2
            RCC_PCLK1Config(RCC_HCLK_Div2);
            //PCLK2(APB2) = HCLK
            RCC_PCLK2Config(RCC_HCLK_Div1);
            RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);//4倍頻
            //啟動(dòng)PLL
            RCC_PLLCmd(ENABLE);
            //等待PLL穩(wěn)定
            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
            //系統(tǒng)時(shí)鐘SYSCLK來自PLL輸出
            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
            //切換時(shí)鐘后等待系統(tǒng)時(shí)鐘穩(wěn)定
            while(RCC_GetSYSCLKSource()!=0x08);
            }
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOB, ENABLE); //給GPIOD提供時(shí)鐘
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //定時(shí)器3提供時(shí)鐘
            }
            void TIM3_Configuration(void)
            {
            TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
            TIM_TimeBaseStructure.TIM_Prescaler = 2; //2分頻 22.1184M
            TIM_TimeBaseStructure.TIM_ClockDivision = 0;
            TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //計(jì)數(shù)模式
            TIM_TimeBaseStructure.TIM_Period = reload_time; //自動(dòng)裝載
            TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
            TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
            TIM_Cmd(TIM3, ENABLE);
            }
            void NVIC_Configuration(void)
            {
            NVIC_InitTypeDef NVIC_InitStructure;
            #ifdef VECT_TAB_RAM
            NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
            #else
            NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
            #endif
            NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //搶占式優(yōu)先級(jí)別, 無搶占優(yōu)先級(jí)
            NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;
            NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
            NVIC_Init(&NVIC_InitStructure);
            }
            void GPIO_Configuration(void)
            {
            GPIO_InitTypeDef GPIO_InitStructure;

            上一頁 1 2 下一頁

            評(píng)論


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

            關(guān)閉