历史上的今天
今天是:2025年04月09日(星期三)
2019年04月09日 | stm32软件触发的按键长按与短按区分
2019-04-09 来源:eefocus
/* ------------------------------------------------------------------------------------------------
* @fn KeyCoolPressTimeHandle
*
* @brief 按键的检测
*
* @param none
*
* @return none
**************************************************************************************************
*/
uint8_t KeyCoolPressTimeHandle(void)
{
static uint32_t KEY_Cool_PressTime = 0;
uint8_t KeyState = KEY_PRESS_NULL;
if(KEY_Cool == (uint8_t)Bit_RESET)
{
if(KEY_Cool_PressTime == 0)
{
KEY_Cool_PressTime = TcomGetTimerCount();
}
if(TcomGetTimerCount() - KEY_Cool_PressTime > LONG_PRESS_TIME)
{
KeyState = KEY_PRESS_LONG;
//KEY_Cool_PressTime = 0;
}
}
else
{
if(KEY_Cool_PressTime != 0 && TcomGetTimerCount() - KEY_Cool_PressTime > SHORT_PRESS_TIME)
{
KeyState = KEY_PRESS_SHORT;
}
KEY_Cool_PressTime = 0;
}
return KeyState;
}
void KeyCoolHandle(void)
{
uint8_t KeyState = KeyCoolPressTimeHandle();
if(KeyStateStruct.Cool == KEY_PRESS_NULL && KeyState != KEY_PRESS_NULL)
{
if(KeyState == KEY_PRESS_SHORT)
{
//执行操作
// ToggleKeyCoolState();
// KeyStateSend(ADDR_COOL);
}
else if(KeyState == KEY_PRESS_LONG)
{
// KEY_LOG("Key Cool Long Pressn");
}
}
KeyStateStruct.Cool = KeyState;
}
史海拾趣
|
ORG 0000H LJMP MAIN; MAIN: Sec EQU 30H; Min EQU 31H; SETB P1.0; CLR P1.1; MOV 30H,#0; MOV 31H,#0; D3:LCALL DELAY INC Sec; MOV A,#60; CJNE A,Sec,D3; INC Min; MOV A,#3;//在这一行,如果这个数是1结果就是正确的计时一分钟 ...… 查看全部问答> |
|
用tim2做个250us的定时 用来把led翻转 本来是2s的翻转 但现在实际是1s翻转 看了半天不知道为什么 各位大侠 帮分析下,程序如下: 谢谢大家! ////////////////////////////////////////////////////////////////////// v ...… 查看全部问答> |
|
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程 ...… 查看全部问答> |
|
《视频1》CUBESUITE+安装及添加R7F0C80212芯片支持 EZ-CUBE安装固件下载 - 【瑞萨电子DIY专区】 - 电子工程世界-论坛 - https://bbs.eeworld.com.cn/thread-444054-1-1.html 《视频2》软件启动初步设置+硬件连接+第一个官方实例下载 - 【瑞萨电子 ...… 查看全部问答> |




