国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: STM32F103_pwm_dac自定義輸出電壓 [打印本頁]

作者: 路漫漫    時間: 2020-5-20 23:44
標題: STM32F103_pwm_dac自定義輸出電壓
本實驗利用按鍵(KEY1/KEY_UP兩個按鍵,或USMART)控制STM32F1的TIM1_CH1的PWM輸出,經過二階RC濾波后轉換為DAC輸出,通過ADC1的通道1采集PWM DAC的輸出電壓,在LCD模塊上面顯示ADC獲取到的電壓值以及PWM DAC的設定輸出電壓值等信息。同時可以通過usmart調用PWM_DAC_Set函數,來直接設置PWM DAC的輸出電壓。
       
注意事項:
        1,4.3寸和7寸屏需要比較大電流,USB供電可能不足,請用外部電源適配器(推薦外接12V 1A電源).
        2,本例程在LCD_Init函數里面(在ILI93xx.c),用到了printf,如果不初始化串口1,將導致液晶無法顯示!!   
        3,ADC的參考電壓默認通過P5連接在VDDA上面(3.3V),所以默認參考電壓是3.3V
        4,通過跳線帽短接多功能接口(P10)的ADC和PDC,即可實現自測試(AD讀取PWM DAC值,顯示在LCD上)

完整代碼: stm32_PWM_DAC.rar (341.68 KB, 售價: 1 E幣)
部分程序片段
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"         
  4. //#include "rtc.h"
  5. #include "adc.h"         
  6. //#include "dac.h"
  7. #include "timer.h"


  8. //設置輸出電壓
  9. //vol:0~330,代表0~3.3V
  10. void PWM_DAC_Set(u16 vol)
  11. {
  12.         float temp=vol;
  13.         temp/=100;
  14.         temp=temp*256/3.3;
  15.         TIM_SetCompare1(TIM1,temp);
  16. }
  17. int main(void)
  18. {         
  19.         delay_init();                     //延時函數初始化         
  20. //        PWM_DAC_Set        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  21.         LED_Init();                             //LED端口初始化

  22.         TIM1_PWM_Init(255,0);        //TIM1 PWM初始化, Fpwm=72M/256=281.25Khz.
  23.   TIM_SetCompare1(TIM1,100);//初始值為0            
  24.         while(1)
  25.         {
  26.                 LED0=0;
  27.                 PWM_DAC_Set(69);
  28.                 delay_ms(10);      

  29.         }
  30. }
復制代碼







歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0