基於STM32Cube的脈沖輸出


方法一:定時器定時I/O反轉生成脈沖波形
1、建立STM32Cube選擇STM32F429,我使用的STM32F429-discovery開發板,晶振是8MHz,時鍾配置為180M,這樣定時器內部時鍾源為90HHz。
2、使能TIM2,時鍾源選擇內部時鍾,如下圖所示:
                                                           
3、這里采用通用定時器產生定時中斷,在中斷里面翻轉芯片管腳,定時器配置如下:
                                   
                                     
4、生成源代碼,設置在keil 5環境下,編譯工程;
5、 中斷回調函數處進行管腳翻轉,另 為了能夠實現不同頻率的脈沖波,同時添加了修改定時器的周期的命令,如下圖所示:
                                     
在主循環之前需要打開定時器,使用函數:HAL_TIM_Base_Start_IT(&htim2);
方法二:使用定時器的PWM波功能可生成脈沖波形
1、建立STM32Cube工程,與方法一相同;
2、使能TIM2,時鍾源選擇內部時鍾,選擇channel 1,PWM Generation CH1功能,如下圖所示;
                                                                         
3、定時器配置如下圖所示:
                                  
                                  
4、生成源代碼,我的環境是Keil 5;
5、為了能夠實現不同頻率的脈沖波,我特意在中斷回調函數的地方,添加了修改定時器的周期的命令,如下圖所示
                                
   在主循環之前打開定時器,使用函數:HAL_TIM_OC_Start_IT(&htim2, TIM_CHANNEL_1);
注意:在這里必須直接使用寄存器設置,方能實現周期變化,如果使用HAL_TIM_OC_Init(),則波形出現亂碼,具體原因沒有查明;
6、最終通過示波器,查看輸出波形如下圖所示:
                                 
剛好10個周期為一個循環,高電平脈寬不變,而周期逐次增大。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM