







- STM32CubeMX
-
引脚功能一览:包括LED1、LED2、LED3、LED8;按键B1、B2、B3、B4;
-
时钟树配置:80MHz系统主频
-
TIM2配置:PA15捕获A通道XL555频率(频率大小受R40电位器调控)、TIM3配置:PB4捕获B通道XL555频率(频率大小受R39电位器调控)
- 工程代码
- 主程序
/**********************************main.h*************************************/
//枚举变量、结构体变量定义
enum
{
DATAf = 1,
DATAt,
PARA,
RECD,
} ;
typedef struct
{
char MyStr[21];
uint8_t ucBrush;
uint8_t Interface;
} LCD;
extern LCD Lcd;
typedef struct
{
double dFreq;
double dTime;
double Max;
double Min;
uint8_t ucBrush;
uint8_t ND;
uint8_t NH;
} TIM;
extern TIM myR40A;
extern TIM myR39B;
/**********************************main.c*************************************/
#include "main.h"
#include "tim.h"
#include "gpio.h"
#include <stdio.h>
#include "key.h"
#include "lcd.h"
#include "led.h"
LCD Lcd; //LCD相关结构体变量
TIM myR40A; //TIM2相关结构体变量
TIM myR39B; //TIM3相关结构体变量
uint16_t PD = 1000; //PD参数,默认值1000
uint16_t PH = 5000; //PH参数,默认值5000
int PX = 0; //PX参数,默认值0
uint8_t ParaChoice = 1; //参数选择标志
uint16_t t3s = 0; //3s窗口时间
void SystemClock_Config(void);
void LCD_Proc(void);
void R40A_Capture(void);
void R39B_Capture(void);
void Measured_Proc(void);
void InitMySystem(void)
{
LCD_Init(); //LCD初始化
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
Lcd.Interface = DATAf; //默认界面
HAL_TIM_IC_Start(&htim2,TIM_CHANNEL_1); //开启TIM2输入捕获
HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_1); //开启TIM3输入捕获
HAL_Delay(10); //上电延时10ms
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
MX_TIM3_Init();
InitMySystem();
/*数据预处理BEGIN*/
R40A_Capture();
R39B_Capture();
myR40A.dFreq += PX;
myR39B.dFreq += PX;
if(myR40A.dFreq > 20000) //限幅,频率测量最大值20KHz
myR40A.dFreq = 20000;
if(myR39B.dFreq > 20000)
myR39B.dFreq = 20000;
myR40A.Max = myR40A.Min = myR40A.dFreq;
myR39B.Max = myR39B.Min = myR39B.dFreq;
/*数据预处理END*/
while (1)
{
Key_Proc(); //按键
LED_Proc(); //LED
LCD_Proc(); //LCD
Measured_Proc(); //数据
}
}
void R40A_Capture(void)
{
myR40A.dTime = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1); //周期
myR40A.dFreq = 1000000 / myR40A.dTime; //1M(us)/T(us) 频率
}
void R39B_Capture</