如何在以30s周期循环检测外部输入
各位大虾,初玩STM32,用的芯片F103RCT6,现手头有个程序不知如何设计在以30s周期循环检测外部输入,请各位指教。具体情况如下:STM32检测外部有高电平+24V输入后,查询外部30个模块的输出状态,若其中任一模块有高电平+24V输出,则报警灯闪烁(间隔1s),持续以30s的时间窗口周期去查询30个模块的输出状态,直至任一模块无高电平输出,则报警灯停止闪烁。附:模块的输出状态其实就是给STM32引脚输入高电平。
bit g_bAlarmFlag;
bit g_bFlag30Sec;
bit g_bFlag1Sec;
while (1)
{
if (g_bFlag30Sec)//定时中断设置此标志,g_bFlag30Sec
{
g_bFlag30Sec = 0;
u32 uiAllFlag = ReadAllInput();
g_bAlarmFlag = uiAllFlag != 0?1:0;
}
if (g_bAlarmFlag)
{
if (g_bFlag1Sec)//定时中断维护此标志,g_bFlag1Sec
{
ALARM_LED = 1;
}
else
{
ALARM_LED = 0;
}
}
else
{
ALARM_LED = 0;
}
} 没看明白,你是不知道如何计时30s还是啥?
定时器读取gpio状态,然后轮询不就行了吗?如果检测到高,置位标志位如一个unsigned int,第几bit表示第几个管脚,然后继续轮询,发现从1变成0了就清除标志位,标志位为空时不输出,非空时1s输出一个高电平
页:
[1]