funpack第七期 按键控制LED灯
funpack第七期 按键控制LED灯,分为点击,短按,长按,并通过串口打印信息
标签
显示
接口
丝血反鲨闰土的猹
更新2021-04-12
1040

使用MCC来生成定义,各种函数不会用中断,就学着大佬直接用delay来计时了,设置了3个变量,一个用来计时,一个用来存储状态,还有一个就是AD的值。

然后使用CH340G 模块来连接电脑,打印各种信息。FosMgx6jv_xZbhaKCARKbw8ZX6bk

引脚

FlyX4lg4NOrzQZoW7kUAHfIVvCEj

串口

FgGjIlyjarKO2LSna3S6BAVTz3jY

 

 

主要的代码

uint16_t adValue = 0;
void main(void)
{
int Time = 0;
int state = 0; //To store state of time  现在的状态,用来记录上一个Time

// initialize the device
SYSTEM_Initialize();
while (1)
{

if (!Button_GetValue()) {  //这里参考大佬的计时方法
__delay_ms(10);
state = Time;

if (!Button_GetValue()) {
Time++;
}

}
else{
adValue = ADCC_GetSingleConversion(channel_ANC0);
if(Time<100 && Time > 1){
printf("Click AD %d \n",adValue);
}
else if(Time>100 && Time < 500){
printf("Press AD %d \n",adValue);
}
else if(Time>500){
printf("Long Press AD %d \n",adValue);
}
Time = 0; //清零,以便下次使用记时
__delay_ms(10);
if(Button_GetValue()){
if(state<100){
Led1_SetHigh();
Led2_SetLow();
Led3_SetLow() ;

}
else if(state>100 && state < 500){
Led1_SetHigh();
Led2_SetHigh();
Led3_SetLow() ;

}
else if(state>500){
Led1_SetHigh();
Led2_SetHigh();
Led3_SetHigh();

}

}
}



}
}

 

心得体会:

1:使用mcc可以大大减少工作量

2:虚拟串口没办法调试

3:通过这次活动,对硬件有了一定的了解,感觉不错

 

附件下载
pic3.X.zip
可编译
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号