3024SINK工程PIO逻辑控制
想问一下,在SINK工程实现一个GPIO的逻辑应该怎么改代码,一个输入口1对应两个输出口2和3,1检测到高电平,2输出高3输出低,1检测到低电平,2输出低3输出高,这个应该怎么实现先把1改为输入,2 3输出,直接轮询判断1的状态,然后驱动2 3即可。 jjr 发表于 2022-6-7 17:01
先把1改为输入,2 3输出,直接轮询判断1的状态,然后驱动2 3即可。
轮询判断应该在哪里写,sink工程跑系统的,不是一个while(1)循环 慢热症 发表于 2022-6-14 15:00
轮询判断应该在哪里写,sink工程跑系统的,不是一个while(1)循环
sink_event.h加一个event,比如说EventSysLoop,放到handleUEMessage
case EventSysLoop:
Function();
MessageSendLater(&theSink.task, EventSysLoop, 0, D_SEC(1));
break;
这样就每1秒一个循环 ganxiniuhe 发表于 2022-6-14 15:50
sink_event.h加一个event,比如说EventSysLoop,放到handleUEMessage
case EventSysLoop:
caseUserEventHeadsetInsert_pull_35:
{
if (PioGetPio(21)==1) //如果插入3.5mm耳机
{
MAIN_DEBUG_L1("headset insert!");
PioOutHigh(1);//使能LM4809
PioOutHigh(53);//关闭NS4871
}
else if (PioGetPio(21)==0) //如果未插入3.5mm耳机
{
MAIN_DEBUG_L1("headset pull!");
PioOutLow(1);//关闭LM4809
PioOutLow(53);//打开NS4871
}
//每一秒循环检测一次IO口
MessageSendLater(&theSink.task, UserEventHeadsetInsert_pull_35, 0, D_SEC(1));
}
break;
你好,我这样添加的,为什么没有生效呢 初始化的时候有没发送这个事件,可以在sinkAppInit里面发送
还有PIO有没做初始化
ganxiniuhe 发表于 2022-6-16 17:56
初始化的时候有没发送这个事件,可以在sinkAppInit里面发送
还有PIO有没做初始化
...
实现了,给大佬磕头了 ganxiniuhe 发表于 2022-6-16 17:56
初始化的时候有没发送这个事件,可以在sinkAppInit里面发送
还有PIO有没做初始化
...
大佬,这个循环检测生效之后好像导致原来的一些时间不发生了,比如EventSysAutoSwitchOff,屏蔽了这个循环检测之后自动关机才能生效,这是什么原因啊
页:
[1]