在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > STM8L探索套件學(xué)習(xí)筆記-信號(hào)發(fā)生器(十四)

            STM8L探索套件學(xué)習(xí)筆記-信號(hào)發(fā)生器(十四)

            作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
            STM8L有一個(gè)DAC通道,能夠?qū)?shù)字信號(hào)轉(zhuǎn)為模擬信號(hào)。官方范例中使用DAC和DMA、TIM4作為一個(gè)信號(hào)發(fā)生器,首先先逐個(gè)介紹下每個(gè)功能:
            DMA用于提供外設(shè)與內(nèi)存或者內(nèi)存與內(nèi)存的高速數(shù)據(jù)傳遞,數(shù)據(jù)能夠直接由DMA移動(dòng),而無需CPU操作,這樣能夠使得CPU的資源可以用于其他操作。DMA控制器有4個(gè)通道,每個(gè)通道用于管理一個(gè)或者多個(gè)外設(shè)的內(nèi)存訪問請(qǐng)求。內(nèi)部有仲裁管理DMA訪問的優(yōu)先權(quán)。由于是8位,DMA最大數(shù)據(jù)量為255。
            DAC模塊是12比特數(shù)模轉(zhuǎn)換器電壓輸出,DAC能夠配置為8比特或者12比特模式,能夠使用DMA控制器。在12比特模式下,數(shù)據(jù)可以選擇左/右對(duì)齊,在中等模式器件下有1個(gè)輸出通道,在中等+和高密度器件有2個(gè)輸出通道。輸入內(nèi)部參考電壓VREF可以獲得更好的角度。
            DAC可以配置為軟件觸發(fā)和TIM4外部觸發(fā)模式,我們使用TIM4外部觸發(fā)模式可以方便地調(diào)整輸出頻率。官方例程使用寄存器操作,比較難懂。這里我們使用固件庫先創(chuàng)建一個(gè)簡單地信號(hào)發(fā)生器,能夠選擇生成信號(hào)的類型,并使用板上的LCD顯示信號(hào)的名稱。
            代碼如下:
            void main(void)
            {
            //CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//系統(tǒng)1分頻,16M
            /* Enable Clocks of DAC, TIM4 and DMA1 */
            CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);
            CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);
            CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
            LCD_GLASS_Init();
            /* DMA channel3 Config -----------------------------------------------------------------*/
            DMA_GlobalDeInit();
            DMA_DeInit(DMA1_Channel3);
            DMA_Init(DMA1_Channel3,WavesTab[0], DAC_CH1RDHRH_ADDRESS,
            130, DMA_DIR_MemoryToPeripheral, DMA_Mode_Circular,
            DMA_MemoryIncMode_Inc, DMA_Priority_High, DMA_MemoryDataSize_HalfWord);

            /* DMA1 Channel 3 enable */
            DMA_Cmd(DMA1_Channel3, ENABLE);
            DMA_GlobalCmd(ENABLE);

            /* DAC Channel1 Config: 12bit right-----------------------------------------------------*/
            /* DAC deinitialize */
            DAC_DeInit();
            /* Fill DAC Init param DAC_Trigger_T4_TRGO andDAC Channel1 Init */
            DAC_Init(DAC_Channel_1, DAC_Trigger_T4_TRGO, DAC_OutputBuffer_Enable);


            /* Enable DAC Channel1 */
            DAC_Cmd(DAC_Channel_1, ENABLE);
            /* Enable DMA for DAC Channel1 */
            DAC_DMACmd(DAC_Channel_1, ENABLE);


            /********* TIM4 Config ********/
            /* TIM4 Configuration */
            TIM4_DeInit();
            /* Time base configuration */
            TIM4_TimeBaseInit(TIM4_Prescaler_16, 0xFF);
            /* TIM4 TRGO selection */
            TIM4_SelectOutputTrigger(TIM4_TRGOSource_Update);
            /* TIM4 enable counter */
            TIM4_Cmd(ENABLE);


            /* Init Eval Board used Buttons*/
            GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_IT);
            //輸入浮空-中斷
            /* Set PC1 sensitivity to falling edge and low level下降沿低電平觸發(fā)*/
            EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling_Low);
            /* Set the EXTI1 IRQ (which is connected to key button) level to 1 */
            ITC_SetSoftwarePriority(EXTI1_IRQn, ITC_PriorityLevel_1);
            /* enable interrupts by setting level 0 */
            enableInterrupts();
            LCD_GLASS_DisplayString("TRIANG");
            BAR_ALL_OFF;
            /* Infinite loop */
            while (1)
            {

            }
            }


            評(píng)論


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

            關(guān)閉