本帖最后由 zenghaiqing 于 2021-10-8 21:26 编辑
void SysTick_Delay_ms(uint32_t ms) { uint16_t i =0; /*定时1ms*/ SysTick_Config(72000); /*清除COUNTFLAG*/ for(i =0;i<ms;i++) { while(!(SysTick->CTRL & (1<<16))); } /*关闭systick*/ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; } 这个能正常用,下面这个不可以用 void SysTick_Delay_ms(uint32_t ms) { /*定时ms*/ SysTick_Config(72000 * ms); /*清除COUNTFLAG*/ while(!(SysTick->CTRL &SysTick_CTRL_CLKSOURCE_Msk)); /*关闭systick*/ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; } SysTick_CTRL_CLKSOURCE_Msk的宏定义是 1ul<<16,那么1ul<<16 和1<<16有什么区别?
|