我启动MMAC功能后,打开中断后,发送数据后一直进入中断处理函数,而且不能进入回调函数;
我没有办法找到清除中断标志的方法,请帮我解决这个问题,谢谢。
以下是代码:
vRadio_ActivateXtal32MRadioBiasing();
vRadio_Temp_Update(40);
vMMAC_Enable();
vMMAC_ConfigureRadio();
vMMAC_EnableInterrupts(MAC_IRQHandler_Callback);
// vMMAC_ConfigureInterruptSources(E_MMAC_INT_TX_COMPLETE | E_MMAC_INT_RX_COMPLETE); //ENABLE_RAM_VECTOR_TABLE=1
// vMMAC_SetChannelAndPower(11, i8MMAC_GetTxPowerLevel());
// vMMAC_EnableAntennaDiversity();
// vMMAC_SetTxParameters();
TxMacFrame.u8PayloadLength = sizeof("MMAC_Transmit_Test");
TxMacFrame.u8SequenceNum = 1;
TxMacFrame.u16FCF = 0;
TxMacFrame.u16DestPAN = 1;
TxMacFrame.u16SrcPAN = 1;
TxMacFrame.uDestAddr.u16Short = 2;
TxMacFrame.uSrcAddr.u16Short = 1;
TxMacFrame.u16FCS = 0;
memcpy(TxMacFrame.uPayload.au8Byte, "MMAC_Transmit_Test", sizeof("MMAC_Transmit_Test"));
TxOption = E_MMAC_TX_START_NOW | E_MMAC_TX_NO_AUTO_ACK | E_MMAC_TX_NO_CCA;
for (;;)
{
if (++time_cnt >= 50)
{
time_cnt = 0;
vMMAC_StartMacTransmit(&TxMacFrame, (teTxOption)TxOption);
evnt_Cnt++;
PRINTF("Default Task vMMAC MacTransmit cnt: %d.\r\n", evnt_Cnt);
}
vTaskDelay(10);
}
}
void MAC_IRQHandler_Callback (uint32 u32InterruptBitmap)
{
/* Is the interrupt for Transmit completed */
if (u32InterruptBitmap & E_MMAC_INT_TX_COMPLETE)
{
bTxComplete = TRUE;
}
/* Is the interrupt for Rx completed */
else if((u32InterruptBitmap & E_MMAC_INT_RX_COMPLETE))
{
bRxComplete = TRUE;
}
}
//打开中断后只能运行一次vMMAC_StartMacTransmit,然后就是无休止的进入以下中断
void ZIGBEE_MAC_IRQHandler (void)
{
NVIC_ClearPendingIRQ(ZIGBEE_MAC_IRQn);
// NVIC_DisableIRQ(ZIGBEE_MAC_IRQn);
}