標(biāo)題: 正點(diǎn)原子STM32f1頻率測(cè)量源程序修改版 [打印本頁(yè)]

作者: 1339337425    時(shí)間: 2019-7-17 15:11
標(biāo)題: 正點(diǎn)原子STM32f1頻率測(cè)量源程序修改版
我是在精英板PWM例程上做的修改,保留了原本的PB5的PWM輸出,這樣可以馬上輸出波形并觀測(cè)。在Timer.c中添加了PA0定時(shí)器5的代碼,波形通過(guò)PA0檢測(cè),并把OLED顯示添加到了工程,最后以O(shè)LED顯示輸出。用示波器測(cè)PB5輸出頻率為9542,stm32檢測(cè)為9545,誤差不大。可以在主函數(shù)中調(diào)整TIM3_PWM_Init(7542,0);來(lái)修改頻率,PB5輸出PWM頻率=72000000/7542=9545HZ,修改第一個(gè)入口參數(shù)即可修改率 ,修改TIM_SetCompare2(TIM3,3999);可以調(diào)整占空比,占空比=3999/7542 。

制作出來(lái)的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "oled.h"

  8. /*u32 fq;
  9.         u32 CNT=0;
  10.        
  11. void TIM5_IRQHandler(void)
  12. {
  13.     if(TIM_GetITStatus(TIM5,TIM_IT_Update)!= RESET)
  14.     {
  15.         TIM_ClearITPendingBit(TIM5,TIM_IT_Update);  
  16.          
  17.         CNT=TIM_GetCounter(TIM2);
  18.         fq=CNT;
  19.                         printf("當(dāng)前頻率為:%d Hz\r\n",fq);
  20.                
  21.                
  22.                
  23.         TIM_SetCounter(TIM2,0);
  24.     }
  25. }

  26. */


  27. int main(void)
  28. {       

  29.         delay_init();                     //延時(shí)函數(shù)初始化          
  30.                   //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  31.         uart_init(115200);         //串口初始化為115200
  32.         LED_Init();                             //LED端口初始化
  33.        
  34.          TIM2_Init();
  35.          TIM5_Int_Init(9999,7199);       

  36.          TIM3_PWM_Init(7542,0);
  37.          TIM_SetCompare2(TIM3,3999);
  38.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  39.          OLED_Init();       
  40.                  OLED_Refresh_Gram();

  41. //不分頻。PWM頻率=72000000/900=80Khz
  42. while(1)
  43.         {  
  44.          TIM_Cmd(TIM2, ENABLE);
  45.                 TIM_Cmd(TIM3, ENABLE);
  46.                 TIM_Cmd(TIM5, ENABLE);
  47.                 OLED_Refresh_Gram();
  48.        
  49.                 OLED_ShowNum(20,30,frequence,7,16);
  50.                
  51.   }

  52.          
  53.         }
復(fù)制代碼

所有資料51hei提供下載:
頻率計(jì).7z (197.89 KB, 下載次數(shù): 108)

作者: 1339337425    時(shí)間: 2019-7-17 18:34
補(bǔ)充一句 這個(gè)不能測(cè)有負(fù)電壓的波形,只能測(cè)具有占空比的正方波,否則誤差很大
作者: 豬豬珂珂    時(shí)間: 2019-8-10 01:47
樓主能介紹下怎么用嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1