27,373
社区成员
发帖
与我相关
我的任务
分享
void delay_ms(u32 time)
{
delaytime=time;
while(delaytime!=0);
}
...
void SysTick_Handler(void)
{
delaytime--;
}
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
static void KeyStatusGet(volatile KEY* pKey, u8 power)
{
//pKey->hardStatus = pKey->keyHardStatus(pKey);
//if(pKey->keyHardStatus(pKey) == KEY_UP)
if ((pKey->GPIOx->IDR & pKey->GPIO_Pin) != (uint32_t)Bit_RESET)
{
pKey->status = KEY_STATUS_UP;
pKey->pressCnt = 0;
}
else
{
pKey->pressCnt += KEY_SCAN_TIME;
if(pKey->pressCnt >= KEY_NORMAL_DOWN_TIME && pKey->status == KEY_STATUS_UP)
{
//if(power)
// ;//pKey->status = KEY_STATUS_DOWN_POWER;
//else
pKey->status = KEY_STATUS_DOWN_NORMAL;
}
else if(pKey->pressCnt >= KEY_LONG_DOWN_TIME)
{
pKey->pressCnt = KEY_LONG_DOWN_TIME;
if(pKey->status != KEY_STATUS_DOWN_POWER && power)
pKey->status = KEY_STATUS_DOWN_POWER;
else if(KEY_STATUS_DOWN_LONG != pKey->status && pKey->status != KEY_STATUS_DOWN_POWER)
pKey->status = KEY_STATUS_DOWN_LONG;
// if(power == 0 && KEY_STATUS_DOWN_LONG != pKey->status)
// pKey->status = KEY_STATUS_DOWN_LONG;
}
}
}
void timer0(void)
{
if(io_key==0)keycnt++;else keycnt=0
if(keycnt==5)key=1;//连续5次都采集到就认为有按键
}