|
裸机BSP中,关于DISABLE_INT()与ENABLE_INT()使用的疑惑,求解惑。
例如:如下在软件定时器中,如果进入DISABLE_INT关闭中断后,中断还未开启之前,那其他外接的如串口等外设这时产生一帧主动上报数据,该情况下串口数据会丢失嘛?再者DISABLE_INT()和ENABLE_INT()之间的执行时间较久,是否会出现问题?
void bsp_StartAutoTimer(uint8_t _id, uint32_t _period)
{
if (_id >= TMR_COUNT) {
/* 打印出错的源代码文件名、函数名称 */
//BSP_Printf("Error: file %s, function %s()\r\n", __FILE__, __FUNCTION__);
while (1); /* 参数异常,死机等待看门狗复位 */
}
DISABLE_INT(); /* 关中断 */
s_tTmr[_id].Count = _period; /* 实时计数器初值 */
s_tTmr[_id].PreLoad = _period; /* 计数器自动重装值,仅自动模式起作用 */
s_tTmr[_id].Flag = 0; /* 定时时间到标志 */
s_tTmr[_id].Mode = TMR_AUTO_MODE; /* 自动工作模式 */
ENABLE_INT(); /* 开中断 */
}
|
|