有一个问题 比较迷糊 今天遇到一个具体的情况 表达出来 求助。
现有业务逻辑:两个STM32的设备通讯,一个是门禁产品A,一个是来测试门禁的B,两者连通。
一个 线是门内开门,我B拉低电平,发出开门信号,A应该在relay做翻转响应。
逻辑在B发出信号以后有一个堵塞,也就是超时等待。
我写了个函数
- #define KEYCOUNT 1000
- #define Enableopendoor() GPIO_SetBits(KEYGPIO ,KEYGPIOPIN)
- #define Disableopendoor() GPIO_ResetBits(KEYGPIO ,KEYGPIOPIN)
- #define Is_relay_on()
- void Test_Key_Open(void)
- {
- int count=0;
- short tem=0;
- while(count<KEYCOUNT)
- {
- //拉低电平 执行开门
- Enableopendoor();
- //堵塞等待是否响应
- while(Is_relay_on())
- {
- tem++;
- if(tem>100)//问题就在这里
- break;
- }
- //响应了
- if(Is_relay_on())
- {
- //开门成功
- printf("sucess");
- }
- //超时了没响应
- else
- {
- //开门失败
- printf("fail");
- }
- //拉高电平 不在按键
- Disableopendoor();
- count++;
- }
- }
复制代码 我的问题就是堵塞的时候:
while(Is_relay_on())
{
tem++;
if(tem>100)
break;
}
我的tem++到100 一共是等待多久呢?
(晶振8M)
另外我UCOS也可以加入
OSTimeDlyHMSM(0, 0, 0,1);
while(Is_relay_on())
{
OSTimeDlyHMSM(0, 0, 0,1);
tem++;
if(tem>100)
break;
}
这样我就是知道是等了100个1MS 这样好吗?
|
评分
查看全部评分
评分
查看全部评分
长一点的延时还是必须用定时器来做,定时准确而且不影响其它程序运行
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分