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

 
 
 
Reply to this topicStart new topic
> еще о приоритетах прерываний cortex m3, после вызова xQueueCreate перестает обрабатываться прерывание от uart
winniethepooh
сообщение May 20 2016, 15:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 3-06-15
Пользователь №: 86 995



Здравствуйте.

использую низкоуровневую библиотеку драйверов от производителя (cortex m3 от spansion ) совместно с freertos.
в функции main после вызова xQueueCreate (перестаёт обрабатываться прерывание от Uart (уровень прерывания 15 на момент инициализации)
уровни в FreeRTOSConfig
configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
configMAX_SYSCALL_INTERRUPT_PRIORITY 0x50
configKERNEL_INTERRUPT_PRIORITY 0xf0

в отладчике вижу что после вызова xQueueCreate регистр BASEPRI получает значение configMAX_SYSCALL_INTERRUPT_PRIORITY =0x50
(для freertos это похоже на вход в критическую секцию), и прерывания от uart выше 4 перестали обрабатываться
предполагаю что младшие четыре байта для регистра приоритета не важны а в старших записано 5 и все что выше или равно 5
запрещается регистром приоритета BASEPRI.

Вопрос зачем при создании очереди блокировать прерывания?

p.s. кажется ответ нашелся. блокировка нужна для многозадачной среде(что бы свойства очереди не менять) и критическая секция соответственно.

Сообщение отредактировал winniethepooh - May 20 2016, 15:40
Go to the top of the page
 
+Quote Post

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

 


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


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