工具与软件:
hi champs、
我向客户提出这个问题。
使用 FreeRTOS 时、如何使用 FreeRTOS 来控制 C2000上的中断?
在 ARM 设备中、FreeRTOS 无法阻止优先级过高的中断。 F28P65x 是否具有类似的逻辑? 谢谢!
Julia
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
hi champs、
我向客户提出这个问题。
使用 FreeRTOS 时、如何使用 FreeRTOS 来控制 C2000上的中断?
在 ARM 设备中、FreeRTOS 无法阻止优先级过高的中断。 F28P65x 是否具有类似的逻辑? 谢谢!
Julia
我的项目目前在 F28P65上使用 FreeRTOS 系统、AD 中断仍在 ISR 函数中执行、其余中断由信号灯执行、后者会将中断的执行内容封装到任务中、具体框架如下所示、但现在容易出现看门狗超时芯片复位的现象。 当 AD 中断时、看门狗将向看门狗馈送信号。 AD 频率为32k、操作系统节拍频率为1kHz。 原因是什么? 谢谢!
__interrupt void ADC_ISR (void)
{
volatile uint16_t tempPIEIER = HWREGH (PIECTRL_BASE + PIE_O_IER1);
IER |= M_INT1;
IER &= MINT1;
HWREGH (PIECTRL_BASE + PIE_O_IER1)&= MG1_1;
interrupt_clearACKGroup (0xFFFFU);
__ asm (" NOP");
EINT;
…
代码;
serviceWatchdog;
ADC_clearInterruptOverflowStatus (ADCA_BASE、ADC_INT_number1);
ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_number1);
interrupt_clearACKGroup (INTERRUPT_ACK_GROUP1);
颜色;
HWREGH (PIECTRL_BASE + PIE_O_IER1)= tempPIEIER;
}
__interrupt void cpuTimer0ISR (void)
{
basetype_t xHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR( binarySem1Handle,&xHigherPriorityTaskWoken );
interrupt_clearACKGroup (INTERRUPT_ACK_GROUP1);
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
void cpuTimer0_ISR_Task (void * pvParameters)
{
for (;;)
{
if (xSemaphoreTake (binarySem1Handle、portMAX_delay)=pdTRUE)
{
代码;
}
}
}
_interrupt void eCAN_ISR0 (void)
{
basetype_t xHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR( binarySem2Handle,&xHigherPriorityTaskWoken );
interrupt_clearACKGroup (interrupt_ACK_group9);
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
void ECANA_isr0_Task (void * pvParameters)
{
for (;;)
{
if (xSemaphoreTake (binarySem2Handle、portMAX_delay)=pdTRUE)
{
代码;
}
}
}
__interrupt void Sci_Rx 40r (void)
{
basetype_t xHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR( binarySem4Handle,&xHigherPriorityTaskWoken );
sClearSciIntFlag();
interrupt_clearACKGroup (interrupt_ACK_group9);
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
void Scia_Rx_ r_Task( void * pvParameters )
{
for (;;)
{
if (xSemaphoreTake (binarySem4Handle、portMAX_delay)=pdTRUE)
{
代码;
}
}
}
尊敬的 Wang:
尝试理解此处的问题。 您的问题与 FreeRTOS、中断或看门狗相关?
我的 AD 中断仍然在 ISR 函数中执行、其余中断由信标完成、信标将中断的执行内容封装到任务中、具体框架如下所示、但现在容易出现看门狗超时芯片复位的现象
我不能理解你的意思上面?
AD 中断在 ISR 中执行?
中断由信标完成?
请详细说明您的问题、以便我更好地理解这一点
谢谢