delay头文件分为三个函数 staticu8fac_us=0;//us延时倍数staticu16fac_ms=0;//ms延时倍数delay_init(void);delay_ms(u16nms);delay_us(u32nus); delay_init(void)函数 //选择时钟源函数SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//SystemCoreClock 定义在芯片文件中 SYSCLK_FREQ_72MHz 7200000...
/** * @brief 延时毫秒(ms)函数 * * @param nms 需要延时多少毫秒 * * @return void */ voiddelay_ms(u16 nms) { u32 i; for(i = 0; i < nms; i++)delay_us(1000); } 毫秒延时函数调用微妙延时函数 /** * @brief 延时微秒(us)函数 * * @remark nus:0~190887435(最大值即2^32/fac_...
void delay_ms(u16 nms) { u32 i; for(i=0;i< nms;i++) delay_us(1000); } 该函数其实就是多次调用前面所讲的delay_us 函数,来实现毫秒级延时的。再来看看使用OS 的时候, delay_ms 的实现函数如下: //延时 nms //nms:要延时的 ms 数 //nms:0~65535 void delay_ms(u16 nms) { if(delay_...
void delay_ms(u16 nms) { u32 temp; SysTick->LOAD = 9000*nms; SysTick->VAL=0X00;//清空计数器 SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源 do { temp=SysTick->CTRL;//读取当前倒计数值 }while((temp&0x01)&&(!(temp&(1<<16)));//等待时间到达 SysTick->CTRL=0x00; ...
void delay_ms(u16 nms) { u32 temp; SysTick-》LOAD=(u32)nms*fac_ms; //时间加载(SysTick-》LOAD为24bit) SysTick-》VAL =0x00; //清空计数器 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick-》CTRL;
void delay_ms(u16 nms) { if(delay_osrunning&&delay_osintnesting==0) //如果OS已经在跑了,并且不是在中断里面(中断里面不能任务调度) { if(nms>=fac_ms) //延时的时间大于OS的最少时间周期 { delay_ostimedly(nms/fac_ms); //OS延时 }
delay_ms函数 改函数用来延时指定的ms,其参数nms为要延时的毫秒数。同样有使用OS和不使用OS 首先使用OS: //延时nms//注意nms的范围//SysTick->LOAD为24位寄存器,所以,最大延时为://nms<=0xffffff*8*1000/SYSCLK//SYSCLK单位为Hz,nms单位为ms//对72M条件下,nms<=1864voiddelay_ms(u16 nms) ...
//恢复OS调度}//延时nms//nms:要延时的ms数void delay_ms(u16 nms){if(delay_osrunning&&delay_osi...
void delay_ms(u16 nms) { u32 temp; Systick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00; //清空计数器 SysTick->CTRL=0x01 ; //开始倒数 do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 ...
voiddelay_ms(u16nms) { u32temp; SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00;//清空计数器 SysTick->CTRL=0x01;//开始倒数 do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 SysTick->CTRL=0x00;//关闭计数器...