ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
994917 Топик полностью
klen (14.04.2020 00:47, просмотров: 653) ответил stdenits на Доброго дня.
дык про freertos все просто 

1) portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE ;
пепеменная определяймая обычно на стеке обработчика прерывания и получаемая щначение которое говорить - изменился ли план шедуллера изза работы кода обработчика, тоесть код мог породить ситуацию когда отвисающая в ожидании более высокприоритетная задача получила данные и немедленно должна получить управление

2) xQueueSendFromISR (xRxedChars, &ret, &xHigherPriorityTaskWoken);
это специфичный для обработчика прерываний вызов запиховыния данных в очередь, с измеением значения xHigherPriorityTaskWoken

3) portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
сообщение шедуллеру что 'вдруг изза работы кода обработчика прерыания' нужно немедленно перепланировать потоки - остановить текущую и запустить более приоритетную

4) xQueueReceive(xRxedChars , &ret , portMAX_DELAY);

специфичный для кода задачи принять данные из очереди - вызов блокирующий, в данном сдучае до тех пор пока данные не появятся в очереди (portMAX_DELAY)

5) static xQueueHandle xRxedChars;

ну типа дескрипрор очереди, или хендл еще называбт, по факту содержит адрес экземпляра структуры очереди.


xRxedChars = xQueueCreate (1, (unsigned portBASE_TYPE) sizeof (signed portCHAR));

вызов создающий на куче очередь, если вернул не нуль - пользуйся ей .


звиняте за орфографию и пунктуцию... какая нах пунктуация. с сегодняшнего дня приняли на фирме карантин, завез домой последнее борохло на поработать дома - с горя решил бухнуть, кого я теперь по утрам строить буду.. себя ;(