继LED闪烁之后,该测试用户按键了。按键的配置代码早已在MCC中设置好了,只要写上控制代码就行。为了体现出按键的效果,我设置了一个延时变量,每按一次按键改变一次延时的时间,从100毫秒开始,每次翻番,到了1600毫秒后则每次减半,减至100毫秒后又每次翻番,如此循环下去。
由于使用的是轮询按键,因此在延时过程中不会去检测按键状态,只有LED灯跳变之前才会检查是否按键,这在延时超过400毫秒后就非常明显,一定要按下键等LED变化之后再释放,系统才能检测到按键。
检测按键的宏定义在pin_manager.h文件中,测试的代码如下:
#include "mcc_generated_files/mcc.h"
uint8_t keyok,mode,hour,minute,second,direction;
uint16_t year,keys,ms,delays = 100;
/*
Main application
*/
int main(void)
{
/* Initializes MCU, drivers and middleware */
SYSTEM_Initialize();
/* Replace with your application code */
while (1){
if(IO_PF6_GetValue()==0){
DELAY_milliseconds(50);
if(IO_PF6_GetValue()==0){
if(direction==1){
delays = delays << 1;
if(delays > 1000){
direction = 0;
delays = 800;
}
}
else{
delays = delays >> 1;
if(delays < 100){
direction = 1;
delays = 100;
}
}
}
}
IO_PF5_Toggle();
DELAY_milliseconds(delays);
}
}
测试过程的照片如下:
测试过程的视频文件压缩后一个2秒时长的文件为5.14M,一个57秒时长的文件为116M,都无法上传。手机下载了一个录制GIF文件的APP,可录制的文件却传不到电脑上,通过微信可以发送,但接收后只能观看无法保存。晕!
整个项目打包压缩如下,解压即可编译下载运行。
Key_Led_example_1.X.rar
(239.83 KB)
|