本實驗利用按鍵(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幣)
2020-5-20 23:44 上傳
點擊文件名下載附件
售價: 1 E幣 [記錄]
[ 購買]
部分程序片段- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- //#include "rtc.h"
- #include "adc.h"
- //#include "dac.h"
- #include "timer.h"
- //設置輸出電壓
- //vol:0~330,代表0~3.3V
- void PWM_DAC_Set(u16 vol)
- {
- float temp=vol;
- temp/=100;
- temp=temp*256/3.3;
- TIM_SetCompare1(TIM1,temp);
- }
- int main(void)
- {
- delay_init(); //延時函數初始化
- // PWM_DAC_Set NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- LED_Init(); //LED端口初始化
- TIM1_PWM_Init(255,0); //TIM1 PWM初始化, Fpwm=72M/256=281.25Khz.
- TIM_SetCompare1(TIM1,100);//初始值為0
- while(1)
- {
- LED0=0;
- PWM_DAC_Set(69);
- delay_ms(10);
- }
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|