<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM8L探索套件學(xué)習(xí)筆記-信號(hào)發(fā)生器(十四)

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

          作者: 時(shí)間:2016-11-24 來(lái)源:網(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),而無(wú)需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)整輸出頻率。官方例程使用寄存器操作,比較難懂。這里我們使用固件庫(kù)先創(chuàng)建一個(gè)簡(jiǎn)單地信號(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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();