|
我是在精英板PWM例程上做的修改,保留了原本的PB5的PWM輸出,這樣可以馬上輸出波形并觀測。在Timer.c中添加了PA0定時(shí)器5的代碼,波形通過PA0檢測,并把OLED顯示添加到了工程,最后以O(shè)LED顯示輸出。用示波器測PB5輸出頻率為9542,stm32檢測為9545,誤差不大。可以在主函數(shù)中調(diào)整TIM3_PWM_Init(7542,0);來修改頻率,PB5輸出PWM頻率=72000000/7542=9545HZ,修改第一個(gè)入口參數(shù)即可修改率 ,修改TIM_SetCompare2(TIM3,3999);可以調(diào)整占空比,占空比=3999/7542 。
制作出來的實(shí)物圖如下:
2.jpg (4.67 MB, 下載次數(shù): 69)
下載附件
2019-7-17 15:10 上傳
4.jpg (5.08 MB, 下載次數(shù): 62)
下載附件
2019-7-17 15:10 上傳
1.jpg (3.81 MB, 下載次數(shù): 78)
下載附件
2019-7-17 15:10 上傳
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
- #include "oled.h"
- /*u32 fq;
- u32 CNT=0;
-
- void TIM5_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM5,TIM_IT_Update)!= RESET)
- {
- TIM_ClearITPendingBit(TIM5,TIM_IT_Update);
-
- CNT=TIM_GetCounter(TIM2);
- fq=CNT;
- printf("當(dāng)前頻率為:%d Hz\r\n",fq);
-
-
-
- TIM_SetCounter(TIM2,0);
- }
- }
- */
- int main(void)
- {
- delay_init(); //延時(shí)函數(shù)初始化
- //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
- uart_init(115200); //串口初始化為115200
- LED_Init(); //LED端口初始化
-
- TIM2_Init();
- TIM5_Int_Init(9999,7199);
- TIM3_PWM_Init(7542,0);
- TIM_SetCompare2(TIM3,3999);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- OLED_Init();
- OLED_Refresh_Gram();
- //不分頻。PWM頻率=72000000/900=80Khz
- while(1)
- {
- TIM_Cmd(TIM2, ENABLE);
- TIM_Cmd(TIM3, ENABLE);
- TIM_Cmd(TIM5, ENABLE);
- OLED_Refresh_Gram();
-
- OLED_ShowNum(20,30,frequence,7,16);
-
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
頻率計(jì).7z
(197.89 KB, 下載次數(shù): 108)
2019-7-17 19:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|