最近在做组内项目时,基于江科大STM32做了一个简易频率计,可测量正弦波和方波,测量范围1-65536hz,通过OLED显示,并且可实现串口传输和NRF24L01无线传输,将测量数据实时传输到电脑上,下方有演示视频。需要代码可联系QQ1090632294。
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Time.h"
#include "Serial.h"
#include "NRF24L01.h"
#include "MyRTC.h"
extern int fq;
int main(void)
{
double i=0;//
OLED_Init();//
TIM2_Int_Init();//
Serial_Init();
TIM4_Cap_Init(10000-1,7200-1);i=1;//1hz~65536hz
NRF24L01_Init();
OLED_ShowString(1, 1, "Init Successful");
// MyRTC_Init();
//
// RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
//
// uint32_t Alarm=RTC_GetCounter()+10;
// RTC_SetAlarm(Alarm);
// OLED_ShowNum(2,6,Alarm,10);
// Serial_SendFloatNum(222222.222,3);
while(1)
{
Delay_ms(200);
if((fq*i)==0)
{
NRF24L01_Printf("µ±Ç°Á÷Á¿Ð¡ÓÚ");
Delay_ms(200);
NRF24L01_SendFloatNum(2.2,1);
Delay_ms(200);
NRF24L01_SendString("L/MIN\r\n");
Delay_ms(200);
}
if((fq*i)>0)
{
NRF24L01_Printf("µ±Ç°Á÷Á¿");
Delay_ms(200);
NRF24L01_SendFloatNum((fq*i+13)/6,1);
Delay_ms(200);
NRF24L01_SendString("L/MIN\r\n");
Delay_ms(200);
OLED_ShowCHINESE(1,1,0,2);
OLED_ShowCHINESE(1,2,1,2);
OLED_Digit_judgment_float(((fq*i+13)/6),1,2,1);
OLED_ShowNum(2,1,(fq*i+13)/6,OLED_Digit_judgment_integer((fq*i+13)/6));
OLED_ShowString(2,12,"L/MIN");//hz
}
// Serial_Printf("µ±Ç°Á÷Á¿ ");
// Serial_SendFloatNum((fq*i+13)/6,1);
//
// Serial_SendString("L/MIN\r\n");
// OLED_Clear();
// PWR_EnterSTANDBYMode();
}
}
单片机频率计