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

 
 
> Как из обработчика прерывания(вынесен в отдельный файл) вызвать xTaskResumeFromISR
Neo_Matrix
сообщение Feb 25 2016, 15:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 11-04-06
Пользователь №: 16 029



Такая проблема:
Есть файл main.c в нем имеется задача РТОС, которая объявлена как void vDeleteSTR(void const * argument); сама функция такая
Код
void vDeleteUart(void const * argument)
{
//Здесь удаляем строку
vTaskSuspend(NULL); // Здесь засыпаем, пока прерывание не разбудит...
}

Сам обработчик прерывания вынесен в отдельный файл допустим irq.c
Код
void USART3_IRQHandler(void)
{
xTaskResumeFromISR(vDeleteUart);// Пробовал писать так
}

Но чего и следовало ожидать, vDeleteUart не объявлена в irq.c, соответственно при компиляции ошибка. Как правильно сделать?
extern void vDeleteSTR(void const * argument); - пробовал - не работает.
Спасибо всем.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Neo_Matrix
сообщение Feb 26 2016, 08:18
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 11-04-06
Пользователь №: 16 029



Цитата
В другом файле написатьextern TaskHandle_t xHandle;

Все теперь понял. Это и был основной вопрос, спасибо!

Относительно гневных комментариев: Сам вызов буду осуществлять через cmsis_os, Весь код приведен только как пример(кстати если его записать только в мейне, то все будет работать(возможно не долго)).
Между прочим код компилится без варнингов и без ошибок, если все сгрузить в мейн.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 26 2016, 08:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Neo_Matrix @ Feb 26 2016, 14:18) *
Относительно гневных комментариев: Сам вызов буду осуществлять через cmsis_os, Весь код приведен только как пример(кстати если его записать только в мейне, то все будет работать(возможно не долго)).
Между прочим код компилится без варнингов и без ошибок, если все сгрузить в мейн.

Чтобы сообщить задаче ОС о некоем событии в ISR, используются средства синхронизации ОС. Как то: мэйлбоксы, семафоры, мьютексы и т.п. Читайте описание на свою ОС.
Например: задача ждёт в функции ожидания мэйлбокса -> ISR отправляет сообщение в сей мэйлбокс -> задача просыпается, выполняет работу, опять выходит на функцию ожидания мэйлбокса. И так в цикле.
Так стандартно строятся все задачи - обработчики неких событий от периферии (от ISR).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Neo_Matrix   Как из обработчика прерывания(вынесен в отдельный файл) вызвать xTaskResumeFromISR   Feb 25 2016, 15:58
- - x893   void vDeleteUart(void const * argument);   Feb 25 2016, 17:39
- - zltigo   QUOTE (Neo_Matrix @ Feb 25 2016, 17:58) Т...   Feb 25 2016, 19:36
- - Neo_Matrix   В первом сообщении закралась ошибка, vDeleteUart н...   Feb 25 2016, 20:50
|- - zltigo   QUOTE (Neo_Matrix @ Feb 25 2016, 22:50) к...   Feb 25 2016, 20:52
- - Neo_Matrix   Хорошо допустим есть main.c c с содержимым: Код#in...   Feb 25 2016, 21:44
- - x893   И описание и пример кода http://www.freertos.org/t...   Feb 25 2016, 21:52
- - Neo_Matrix   x893 Спасибо, но если бы все было в одном main.c в...   Feb 25 2016, 22:19
|- - zltigo   QUOTE (Neo_Matrix @ Feb 26 2016, 00:19) С...   Feb 26 2016, 05:51
|- - Ruslan1   Цитата(zltigo @ Feb 26 2016, 08:51) Разум...   Feb 26 2016, 07:25
- - x893   В другом файле написать extern TaskHandle_t xHand...   Feb 25 2016, 23:01
|- - zltigo   QUOTE (Neo_Matrix @ Feb 26 2016, 10:18) М...   Feb 26 2016, 10:03
- - Neo_Matrix   Цитата(jcxz @ Feb 26 2016, 10:38) Чтобы с...   Feb 26 2016, 08:55
|- - jcxz   Цитата(Neo_Matrix @ Feb 26 2016, 14:55) Н...   Feb 26 2016, 09:04
- - Neo_Matrix   Цитата(jcxz @ Feb 26 2016, 11:04) Вопрос ...   Feb 26 2016, 10:14
|- - zltigo   QUOTE (Neo_Matrix @ Feb 26 2016, 12:14) С...   Feb 26 2016, 12:40
- - esaulenka   Цитата(Neo_Matrix @ Feb 25 2016, 18:58) Н...   Feb 29 2016, 07:31
- - zltigo   QUOTE (esaulenka @ Feb 29 2016, 09:31) Во...   Feb 29 2016, 19:10


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 02:49
Рейтинг@Mail.ru


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