本帖最后由 googcheng 于 2020-1-7 11:56 编辑
使用**里的第二种方法,https://blog.csdn.net/zhongao2259/article/details/85259646
//ÑÓʱnus
//nusΪҪÑÓʱµÄusÊý.
void DelayUs(unsigned long nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //ʱ¼ä¼ÓÔØ
SysTick->VAL=0x00; //Çå¿Õ¼ÆÊýÆ÷
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //¿ªÊ¼µ¹Êý
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL =0X00;
}
和做一个1ms SysTick_Handler 中断有冲突?
void SysTick_Handler(void)
{
//static int key_cnt = 0;
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7) != 0)
key_cnt++;
else
key_cnt = 0;
if(key_cnt > 30)
key_long_press = 1;
}
|