在单片机应用中,使用延时函数 DelayMS() 会导致程序在延时期间无法执行其他任务,
这可能影响系统对一些响应时间要求较高的任务的处理。
为了提高系统的响应速度和利用单片机的空闲时间,可以在延时函数中加入 bsp_Idle() 函数,
以允许在延时期间执行一些低优先级的任务或处理其他需要即时响应的操作。
像 modbus 数据解析这样的通讯任务,在需要及时响应的情况下,
利用单片机的空闲时间通过 bsp_Idle() 来处理这类任务能够显著提高通讯的响应速度。
这种做法对于确保通讯的稳定性和即时响应至关重要,而不至于被延时函数影响而导致通讯出现问题。
c
void bsp_DelayMS(uint32_t n)
{
DISABLE_INT();
s_uiDelayCount = n;
s_ucTimeOutFlag = 0;
ENABLE_INT();
while (1)
{
bsp_Idle();
if (s_ucTimeOutFlag == 1)
{
break;
}
}
}
void bsp_Idle(void)
{
if( HS_MOD1_MODE ==0)
MODS_Poll(0);
else
MODH_Poll(0);
}