主题中讨论的其他器件:AFE031
你(们)好
我的项目使用 TI AFE031 FSK boostxl_afe031_f28004x_Rx 作为模板。 我只需如下所示将中断源更改为 EPWM4
#pragma CODE_SECTION (epwm2_ISR、".TI.ramfunc");
_interrupt void epwm4_ISR (void)
{
EALLOW;
//
//启用 ADC ISR 嵌套
//
uint16_t TempPIEIER;
TempPIEIER = PieCtrlRegs.PIEIER2.all;
IER |= M_INT1;
IER &= MINT1; //设置"全局"优先级
PieCtrlRegs.PIEIER2.all &= MG1_1; //设置“组”优先级
PieCtrlRegs.PIEACK.ALL = 0xFFFF; //启用 PIE 中断
asm (" NOP"); //等待一个周期
EINT; //清除 INTM 以启用中断
//
//运行 FSK 相关性检测器函数
//
FSK_corr_Detector _ OverSampl_run (&FSK_struct1);
//
//查看是否检测到标记或空格位
//
if (fsk_struct1.bit_detected!= 0)
{
rxMessage[message_index+]= FSK_struct1.bit_detected;//将检测到的位保存在消息缓冲区中
FSK_struct1.bit_detected = 0;//清除检测到的位成员
//
//在消息缓冲器已满时设置标志
//
if (RX_MESSAGE_SIZE <= MESSAGE_INDEX)
{
MESSAGE_INDEX = 0;
msgFull = 1;
}
}
//
//清除 EPwm2的 INT 标志
//
//EPwm2Regs.ETCLR.bit.INT = 1;
EPwm2Regs.ETCLR.bit.INT = 1;
//
//确认此中断以接收来自组3的更多中断
//
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
//
//恢复为 ADC ISR 嵌套保存的寄存器
//
Dint;
PieCtrlRegs.PIEIER2.all = TempPIEIER;
//
//切换 GPIO 引脚以测量频率、进行调试
//
//GpioDataRegs.GPCTOGGL.bit.GPIO65=1;// LP 引脚47
}
和
#define INTERRUPT_BIT_ISR &epwm4_ISI
中断寄存器(INT_EPWM4、INTERRUPT_BIT_ISR)
只要我添加了 TI 诊断函数代码(该代码引用了诊断库示例 f28002x_test_application.c)、任何操作都正常
Dint;
uint16_t returnVal =
STL_CPU_REG_checkCPURegisters (STA_Tests _注入错误);
IF (返回值=STL_CPU_REG_FAIL)
{
mcuFAULT_Status = mcuFAULT_Status | CPU_REGISTER_FAULT;
}
EINT;
一段时间~ 7分钟后 ISR 函数不会运行。 诊断功能将每14ms 在主循环~中运行一次。
请告知我有没有做错了?