Files
checker_slave/source/elec_det/base/delay.c
ranchuan bff9b1b774 V2.05
重写延时等待函数,解决与模块之间通信间隔有可能过短的问题
    修改硬件版本号时自动修改can波特率
2023-11-13 17:34:05 +08:00

100 lines
852 B
C

#include "base/delay.h"
#include "stdbool.h"
#include "rtthread.h"
typedef struct{
rt_tick_t tick_start;
}self_def;
static self_def g_self;
void delay_wait_start(void)
{
g_self.tick_start=rt_tick_get();
}
void delay_wait_untill_ms(uint32_t nms)
{
rt_tick_t tick_end;
rt_tick_t diff;
if(g_self.tick_start==0){
delay_wait_start();
}
while(1){
tick_end=rt_tick_get();
diff=tick_end-g_self.tick_start;
if(diff>=nms){
break;
}
rt_thread_mdelay(1);
}
g_self.tick_start=0;
}
//此函数已在别处实现
//void delay_us(uint32_t nus)
//{
//}
void delay_ms(uint32_t nms)
{
while(nms > 0)
{
nms--;
delay_us(1000); //普通方式延时,此时ucos无法启动调度.
}
}
void delay_nop(uint32_t nop)
{
while(nop > 0)
{
nop--;
__NOP();
}
}