本帖最后由 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;
 
 - }
 
  
 
 
 
  |