Я изучаю freeRTOS. Мне нужно написать обработчик прерывания ISR для программного обеспечения в freeRTOS для платформы PIC32 (cerebot Mx7ck). Я просмотрел документацию, но не помог. Пожалуйста, помогите кому-нибудь.Программное прерывание в freeRTOS
1
A
ответ
1
/* sW timer */
TimerHandle_t xSysMonTimer = NULL;
xSysMonTimer = xTimerCreate("SysMonTimer",(500/portTICK_PERIOD_MS),pdFALSE,0,Sys_Mon_Callback);
if(xSysMonTimer == NULL)
{
/* The timer was not created. */
}
else
{
/* Start the timer. No block time is specified, and even if one was
it would be ignored because the RTOS scheduler has not yet been
started. */
if(xTimerStart(xSysMonTimer, 0) != pdPASS)
{
/* The timer could not be set into the Active state. */
}
}
void Sys_Mon_Callback(TimerHandle_t pxTimer)
{
if(xTimerReset(xSysMonTimer, 10) != pdPASS)
{
/* The reset command was not executed successfully. Take appropriate
action here. */
}
}
1
Вы ищете программные прерывания таймера или что-то вроде SPI/I2C/UART? У меня есть несколько примеров. Я не знаю, будет ли то, что у меня есть, именно то, что захочет FreeRTOS, но он работает. Ниже представлен URI ISR в файлах uart.c и моих файлах isr.S.
void vU5InterruptHandler(void);
void __attribute__((interrupt(ipl0), vector(_UART_5_VECTOR))) vU5InterruptWrapper(void);
void vU5InterruptHandler(void)
{
/* Declared static to minimize stack use. */
static char cChar;
static portBASE_TYPE xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
/* Are any Rx interrupts pending? */
if(IFS2bits.U5RXIF == 1)
{
//while(U5STAbits.URXDA)
//{
/*
** Retrieve the received character and place it in the
** queue of received characters.
*/
cChar = U5RXREG;
if(cChar != '\n')
{
xQueueSendFromISR(gps_event_queue, &cChar, &xHigherPriorityTaskWoken);
}
//}
IFS2CLR = _IFS2_U5RXIF_MASK;
}
/* Are any Tx interrupts pending? */
if(IFS2bits.U5TXIF == 1)
{
IFS2CLR = _IFS2_U5TXIF_MASK;
}
/* If sending or receiving necessitates a context switch, then switch now. */
portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
}
/* isr.S */
.extern vU5InterruptHandler
.global vU5InterruptWrapper
.ent vU5InterruptWrapper
vU5InterruptWrapper:
portSAVE_CONTEXT
jal vU5InterruptHandler
nop
portRESTORE_CONTEXT
.end vU5InterruptWrapper
Смежные вопросы
- 1. Программное прерывание
- 2. Программное прерывание сетевого трафика
- 3. Программное обеспечение вызвало прерывание соединения: recv failed
- 4. Передать задачу в FreeRTOS
- 5. Интеграция freeRTOS в существующий проект
- 6. Задача FreeRTOS не возобновляется
- 7. FreeRTOS - повреждение стека на STM32F4
- 8. Как исправить java.net.SocketException: Программное обеспечение вызвало прерывание соединения: recv failed
- 9. java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи сокета
- 10. Java ошибка - Программное обеспечение вызвало подключение прерывание: RECV не удалось
- 11. Официальные причины «Программное обеспечение вызвало подключение прерывание: Ошибка сокета записи»
- 12. java.net.SocketException: Программное обеспечение вызвало подключение прерывание: RECV не удалось
- 13. Программное обеспечение Android вызвало прерывание соединения и задачу Async
- 14. jvisualvm: Программное обеспечение вызвало подключение прерывание: разъем Ошибка записи
- 15. Причина «Программное обеспечение вызвало подключение прерывание: RECV не удалось»
- 16. java SocketException: программное обеспечение вызвало прерывание соединения: recv failed
- 17. jcenter Программное обеспечение вызвало прерывание соединения: ошибка записи сокета
- 18. Android Bluetooth: программное обеспечение вызвало прерывание соединения IOException?
- 19. Программное обеспечение вызвало прерывание соединения: ошибка записи сокета
- 20. FreeRTOS configMINIMAL_STACK_SIZE
- 21. FreeRTOS configTICK_RATE_HZ
- 22. Stm32f303 freertos
- 23. FreeRTOS в LPC1343
- 24. Очереди в FreeRTOS
- 25. глобальная переменная freertos внутри isr
- 26. Прерывание/прерывание VBA-Loop
- 27. печать стека задачи в FreeRTOS
- 28. Как перезапустить задачи в FreeRTOS?
- 29. Как portYIELD работает в Freertos
- 30. Нижние половинки на FreeRTOS?
спасибо за ваши усилия. Я ищу прерывание с программным обеспечением. Например, при использовании семафора api freertos происходит сбой программного обеспечения. Он не доступен как вектор прерывания, как в вашем примере. Для поддержки такого прерывания также требуется сборка. – Main