使用MCC来生成定义,各种函数不会用中断,就学着大佬直接用delay来计时了,设置了3个变量,一个用来计时,一个用来存储状态,还有一个就是AD的值。
然后使用CH340G 模块来连接电脑,打印各种信息。
引脚
串口
主要的代码
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:通过这次活动,对硬件有了一定的了解,感觉不错