реклама на сайте
подробности

 
 
> Проблемы с queue, FreeRTOS
Terminator
сообщение Jul 7 2008, 06:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Есть такой кусок кода

Код
// очередь сообщений для вкл выкл
static xQueueHandle cmd_queue;
// возможные сообщения
#define MSG_ON        1
#define MSG_OFF        0
static uint32_t p_msg;
static __attribute__((naked)) portTASK_FUNCTION(Power_Task, pvParameters)
{
    (void)pvParameters;
    for (;;) {
        portBASE_TYPE res = xQueueReceive(cmd_queue, (void*)&p_msg, portMAX_DELAY);
        if (res != pdTRUE)
            continue;
        DBG("Power message: %d\n", p_msg);
               ....
       }
}

// включить/выключить всё
void Power_On(unsigned char onoff)
{
    uint32_t p_send_data;
    if (onoff)
        p_send_data = MSG_ON;
    else
        p_send_data = MSG_OFF;

    DBG("Power send: %d\n", p_send_data);
    xQueueSend(cmd_queue, (void*)&p_send_data, portMAX_DELAY);
}

// инициализация
void Power_Init(unsigned int stack_size, unsigned int priority)
{
    cmd_queue = xQueueCreate(2, sizeof(p_msg));
...



Вызываю Power_On с разными параметрами, на отладочной консоли вижу следующее

Код
Power send: 1
Power message: 1
...
Power send: 0
Power message: 1


Второй раз отправил "0", а получил всё равно "1" 07.gif
Как так?

cmd_queue и p_msg больше нигде не учавствуют.

Ничего не понимаю help.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.03356 секунд с 7
ELECTRONIX ©2004-2016