目录
前言
刚刚打完十五届蓝桥杯,今年的题目相较于去年比较简单,所以侥幸拿了个省一,想跟大家分享一下我的做题思路(如果有不对的地方,请帮忙指出,感谢大家)
题目
解析
第一步:cubemx设置外设
这个题目中的外设用的不多就不过多介绍了,无非就是把LED,LCD,KEY,输入捕获定时器引脚设置一下就行了
先初始化一个计时用的定时器,10ms刷新一次,以用于检测按键按下以及后面提到的时间窗口
另外打开两个输入捕获通道的定时器中断(我这里用到的是PB4—TIM3_CH1,PA15—TIM2_CH1),设置好模式,触发源,时钟源,直接间接通道,还有上升沿,下降沿
下图是定时器2的设置内容,定时器3也是一样的
第二步:代码编写
1、变量定义
struct KEY keys[5] = {0,0};//按键值
u8 face = 0;//界面
u8 display_val = 0;//数据显示界面变量
//频率
int frq_A = 0;
int frq_B = 0;
float frqA_khz = 0;
float frqB_khz = 0;
//周期
float time_A = 0;
float time_B = 0;
//设置参数变量
u8 PNUM = 0; //选择参数0.PD 1.PH 2.PX
u16 PD = 1000;
u16 PH = 5000;
int PX = 0;
//频率超限标志位
u8 PH_A = 1;
u8 PH_B = 1;
//3s的时间窗口变量
u16 Timewindow = 0;
//频率超限变量
int frqA_MAX = 0;
int frqA_MIN = 0;
int frq_NDA = 0; //frqA的差值
int frqB_MAX = 0;
int frqB_MIN = 0;
int frq_NDB = 0; //frqB的差值
//记录参数变量
u8 NDA,NDB,NHA,NHB = 0;
//输入捕获值 1.直接 2.间接
uint32_t tim2_val1,tim2_v