u8 gKeyValue = 0; // 记录按键键值变量 int main(void) { Med_Mcu_Iint(); // 系统初始化 while(1) { gKeyValue = Med_KeyScan(); // 获取按键键值 // 按键KEY0按下 if (gKeyValue == 2) { Med_Led_StateCtrl(LED1,LED_ON); // 点亮LED1 } // 按键KEY1按下 if (gKeyValue ==...
*函数名称:Med_KeyScan *函数功能:检测按下按键 *输入参数:无 *返回值:按键键值 0:按键WK UP,1:KEY0,2:KEY1 *备 注:无 *=== */ u8 Med_KeyScan (void) { // 按键WK UP if (KEY_UP == 1) { delay_ms (10); // 延时10ms消抖 if (KEY_UP == 1) { while (KEY_UP); // 松手检...
if (KeyScan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON) /*如果扫描按键端口电平为高,则打开LED灯*/ { GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN); /*开灯*/ } } } bsp_key.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include "bsp_key....
首先看一下CAN主控制寄存器 (CAN_MCR)的INRQ位。 寄存器介绍CAN_MCR 寄存器CAN_MSR介绍 通过介绍可以直到,想要进入初始化模式,软件先将CAN_MCR的INRQ位置1。然后等待硬件将CAN主状态寄存器(CAN_MSR)的INAK位置1。此时进入初始化模式。 当bxCAN处于初始化模式时,禁止报文的接收和发送,并且CANTX引脚输出隐性位(高...
uint8_t KeyScan(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) { /*检测是否有按键按下 */ if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON ) { /*延时消抖*/ Delay(10000); if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON ) {
void keyscan(void) { uint8_t k; for(k=0;k<keynum;k++){ keyone(k); } } //识别规则 void keyone(uint8_t nkey) { switch(nkey){ case 0: if(KEY0==KEYON){ if(keycnt[nkey]==keypress){ // keycnt[nkey]=0;//长按视为反复触发按键。
*函数名称:Med_KeyScan *函数功能:检测按下按键 *输入参数:无 *返回值:按键键值 0:按键WK UP,1:KEY0,2:KEY1 *备 注:无 *=== */u8Med_KeyScan(void){// 按键WK UPif(KEY_UP ==1) { delay_ms (10);// 延时10ms消抖if(KEY_UP ==1)...
static vu8 keyscan = 0;static vu16 key5del = 100;//按键5禁止延时 static vu16 key6del = ...
bsp.c 文件会调用bsp_KeyScan按键扫描函数。 bsp_timer.c 中的Systick中断服务程序调用 bsp_RunPer10ms。 中断程序和主程序通过FIFO接口函数进行信息传递。 函数调用关系图: 19.3.1 按键FIFO的原理 FIFO是First Input First Output的缩写,先入先出队列。我们这里以5个字节的FIFO空间进行说明。Write变量表示写位置...
void bsp_KeyScan(void) 需要周期性调用,一般放在 SysTick 中断函数里每 10ms 调用一次。 void bsp_PutKey(uint8_t _KeyCode) 为向 FIFO 里存入当前的键值(即哪一个按键的哪一个状态)。 uint8_t bsp_GetKey(void) 为从 FIFO 里读取下一个键值并返回。