gpt4 book ai didi

c - freeRTOS 中的软件中断

转载 作者:行者123 更新时间:2023-12-04 09:40:15 25 4
gpt4 key购买 nike

我正在学习 freeRTOS。我需要在 PIC32 平台(cerebot Mx7ck)的 freeRTOS 中编写软件中断 ISR 处理程序。我浏览了文档,但没有帮助。请有人帮忙。

最佳答案

您是在寻找软件定时器中断还是 SPI/I2C/UART 之类的东西?我有一些例子。我不知道我所拥有的是否正是 FreeRTOS 想要的,但它有效。
下面是 uart.c 中的 UART ISR 和我的 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

关于c - freeRTOS 中的软件中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com