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