您好!
在执行 SWI ASM 命令期间、在警报模式下、我没有预期的程序结束。
此命令在 init_timer_interrupt ()-> disable_fast_interrupt ()-> swi_single_entry (0、0、0、5)中执行。
有人能解释原因是什么吗?请
我的代码是:
~~~μ A
#define main 1.
#include "include.h"
// software_interrupt_wraper.c
void disable_fast_interrupt (void)
{
Swi_single_entry (0、0、0、5);//代码为5;
}
// init_miscellaneous.c
void init_timer_interrupt (void)
{
TimerRegs.T16PWM0CMP0DAT.ALL = 1587;//大约10kHz。 按规格
TimerRegs.T16PWM0CMP1DAT.ALL = 0xFFFF;
TimerRegs.T16PWM0CMPCTRL.ALL = 2;
TimerRegs.T16PWM0CNTCTRL.ALL = 0x00c;
disable_fast_interrupt ();//确保禁用快速中断
disable_interrupt ();
WRITE_FIRQpr (0x0A000000);//将其设置为除 FAULT_INT、DPWM2以外的所有 IRQ
WRITE_REQMASK (0x0A020000);//启用 FAULT_INT 和 PWM0_INT、DPWM2
enable_interrupt ();
ENABLE_FAST_INTERRUPT ();//确保快速中断被启用,并在空闲状态中启用
}
void main()
{
杂项 AnalogRegs.IOMUX.ALL = 0;//启用 JTAG
start_state =5;
杂项 AnalogRegs.GLBION.ALL = MASK_PGOOD | MASK_PSON | MASK_FAIL_IN | MASK_AC_FAIL_IN | MASK_AC_FAIL_OUT | MASK_OR_CTRL;
if (((杂波模拟 Regs.GLBIOREAD.ALL & MASK_PGOOD)&&(杂波模拟 Regs.GLBIOREAD.ALL & MASK_FAILURE))
{
//PMBus_read_write_rom_mode (PMBus_write);
}
//检查最后一次 DFLASH 擦除是否中断
Look for Interrupted_dflash_erase ();
RESTORE_DEFAULT_ALL ();
周期=(switch_FREQ_numero/PMBus_DCDC_CONFIG[0].switching_frequency);//以4ns 为单位
CONFIG_CPCC ();
init_uart1();
init_gpio();
INIT_PMBus (0x58);
init_DPWM ();
#IF 已定义(UCD3138A64)||已定义(UCD3138128)||已定义(UCD3138A64A)||已定义(UCD3138128A)
enable_oversing();
#endif
init_ADC12();
init_protection();
init_volte_loop();
init_current_loop();
init_light_load_configuration ();
init_Miscellaneous ();
init_timer_interrupt ();
for (;;)
{
如果(ERASE_SEGM_COUNTER > 0)
{
ERASE_TASK ();//处理 DFlash 段擦除
}
decimal_out_5_digits (supply_state);
char_out ('\r');
char_out ('\n');
}
}
void c_int00 (void)
{
main();
}
~~~μ A