gpt4 book ai didi

embedded - RTOS - 等待队列中的不同数据

转载 作者:行者123 更新时间:2023-12-02 19:10:53 24 4
gpt4 key购买 nike

我正在对 TI 的一 block 板进行编程,并且我希望能够以某种方式将两个不同的 ISR 发布到任务的消息队列中。那部分工作正常。但是,在接收端,是否有任何智能方法可以让任务挂起在队列中,并根据发布的 ISR 对数据执行不同的操作?

基本上,我有一个 LCD 更新任务,用于显示来自电机的信息。但是,如果我有一个电机传感器 ISR 和一个按钮按下 ISR,它们发送不同的信息进行更新,这可以在一个队列上完成吗?

最佳答案

当然。当每个 ISR 向队列发送消息时,在消息中放入一些内容来标识发送它的 ISR。然后,当接收者读取队列时,它可以根据标识符决定采取哪个操作。

ISR1() {
char msg[4];
msg[0] = '1'; // Identify the queue
get_3_ISR1_data_bytes(msg+1); // Get the data
q_send(msg);
}

ISR2() {
char msg[4];
msg[0] = '2'; // Identify the queue
get_3_ISR2_data_bytes(msg+1); // Get the data
q_send(msg);
}

handler() {
char *msg;
q_rcv(msg);
switch (msg[0]) {
case '1':
// Do ISR1 stuff
break;
case '2':
// Do ISR2 stuff
break;
default:
// Something unpleasant has happened
}
}

如果整个 char 成本太高,您可以仅设置一位(01)来标识 ISR。

关于embedded - RTOS - 等待队列中的不同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com