这东西看到就头疼了,
typedef struct
{
uint8_t Buf[KEY_FIFO_SIZE]; /* 键值缓冲区 */
uint8_t Read; /* 缓冲区读指针 */
uint8_t Write; /* 缓冲区写指针 */
}KEY_FIFO_T;
/*******************************************************************************
函数名: PutKey
输 入: 键值
输 出:
功能说明:将1个键值压入按键FIFO缓冲区
*/
void PutKey(uint8_t _KeyCode)
{
s_Key.Buf[s_Key.Write] = _KeyCode;
if (++s_Key.Write >= KEY_FIFO_SIZE)
{
s_Key.Write = 0;
}
}
/*******************************************************************************
函数名: GetKey
输 入:
输 出: 返回键值, KEY_NONE ( = 0) 表示无键按下
功能说明:从按键FIFO取1个键值
*/
uint8_t GetKey(void)
{
uint8_t ret;
if (s_Key.Read == s_Key.Write)
{
return KEY_NONE;
}
else
{
ret = s_Key.Buf[s_Key.Read];
if (++s_Key.Read >= KEY_FIFO_SIZE)
{
s_Key.Read = 0;
}
return ret;
}
}
来大家看一下程序。分析一番,他这意思就是自己访问自己的第N位,然后指针++只要不超过20就OK,读取的时候也有自己相应的读取位,挤压函数放入SYSTICK不停搜索, 一旦有按键安。就压入BUF中,然后再while(1)里一直读这个值。。。。你们分析呢
|