HK32单片机按键扫描代码 时间:2026-06-24 来源: 芯片解密 浏览:2次 字号:大 中 小 分高低电平两种void Keys_Scan_Periodic_Callback(void){ static uint32_t key1_cnt = 0; static uint32_t key2_cnt = 0; static uint32_t key3_cnt = 0; static uint32_t key4_cnt = 0; if((GPIOC->IDR & GPIO_Pin_3) ) //高电平 { key1_cnt ++; if(T_50ms == key1_cnt) { key1_flag = SET; } if(key1_cnt > 0x0FFFFFFF) { key1_cnt = 0x0FFFFFFF; } } else { key1_cnt = 0; } if( !(GPIOC->IDR & GPIO_Pin_4) )//低电平 { key2_cnt ++; if(T_50ms == key2_cnt) { key2_flag = SET; } if(key2_cnt > 0x0FFFFFFF) { key2_cnt = 0x0FFFFFFF; } } else { key2_cnt = 0; } if( !(GPIOC->IDR & GPIO_Pin_5) ) { key3_cnt ++; if(T_50ms == key3_cnt) { key3_flag = SET; } if(key3_cnt > 0x0FFFFFFF) { key3_cnt = 0x0FFFFFFF; } } else { key3_cnt = 0; } if( !(GPIOC->IDR & GPIO_Pin_6) ) { key4_cnt ++; if(T_50ms == key4_cnt) { key4_flag = SET; } if(key4_cnt > 0x0FFFFFFF) { key4_cnt = 0x0FFFFFFF; } } else { key4_cnt = 0; }}void ADC_Scan_Periodic_Callback(void){ static uint32_t adc_cnt = 0; if(ADC1->DR < ADC_Threshold_Value) { adc_cnt ++; if(T_100ms == adc_cnt) { acd_power_down_flag = SET; } if(adc_cnt > 0x0FFFFFFF) { adc_cnt = 0x0FFFFFFF; } } else { adc_cnt = 0; }} 下一篇:STM32烟雾检测程序 DHT11温湿度采集