主题中讨论的其他器件:C2000WARE
您好!
我遇到了一个问题、想要更改中断优先级、因此我在项目中包含了相应的头文件。 您可以在此处找到详细信息。 中断可以独立工作(我对它们进行了注释、然后在主程序中逐一重新激活它们)、但当我至少激活其中的两个中断时、它们将不再工作。 例如、当我激活 ADC 中断并减慢任务时、我不再转至 ADC 中断。
我查看过这些示例、但找不到解决方案。
Here a part of my main code /** * Interrupt for state machine sequencing and synchronization for slow background tasks all of 10ms. */ timer_cpu_config(CPUTIMER0_BASE, DEVICE_SYSCLK_FREQ, 10000); Interrupt_register(INT_TIMER0, &isr_slow_tasks); CPUTimer_enableInterrupt(CPUTIMER0_BASE); Interrupt_enable(INT_TIMER0); /** * Set up the ADC / ePWM SOC and initialize the end of conversion. * Enable interrupt. */ Interrupt_register(INT_ADCA1, &isr_adca); adc_config(ADCA_BASE); adc_config(ADCC_BASE); adc_init_soc(); Interrupt_enable(INT_ADCA1); /** * Enable Global Interrupt (INTM) and realtime interrupt (DBGM) */ EINT; ERTM;
__interrupt void isr_adca(void)
{
GPIO_writePin(4, 1); // for test
/// Save IER register on stack
volatile uint16_t tempPIEIER = HWREGH(PIECTRL_BASE + PIE_O_IER1);
/// See prioritized_isr_levels.h file for explanations and details. Set global priority with INTxPL values and others Gx_xPL
/// Set the global and group priority to allow CPU interrupts with higher priority.
/// The user must set the appropriate priority level for each of the CPU interrupts.
/// This is termed as the "global" priority. The priority level must be a number between 1 (highest) to 16 (lowest).
/// A value of 0 must be entered for reserved interrupts or interrupts that are not used.
IER |= M_INT1;
IER &= MINT1;
HWREGH(PIECTRL_BASE + PIE_O_IER1) &= MG1_1;
/// Enable Interrupts
Interrupt_clearACKGroup(0xFFFFU);
__asm(" NOP");
EINT;
/// To be sure all contactor's are open when offsets are read in order to obtain the correct value of the offset
if((flag_read_offset_adca == 0) &&
(flag_read_offset_adcc == 0) &&
(engineer_return_contactor_k_line_fc == RETURN_CONTACTOR_OPEN) &&
(engineer_return_contactor_k_pl_fc == RETURN_CONTACTOR_OPEN) &&
(engineer_return_contactor_k_line_batt == RETURN_CONTACTOR_OPEN) &&
(engineer_return_contactor_k_pl_batt == RETURN_CONTACTOR_OPEN))
{
read_offset_at_init_adca();
flag_read_offset_adca = 1;
read_offset_at_init_adcc();
flag_read_offset_adcc = 1;
}
MU_TRAC_BATT_FLT_ACC_SAMPLE = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER2) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER3);
/// Divide by 4 to obtain average value.
MU_TRAC_BATT_FLT_AVG_SAMPLE = (MU_TRAC_BATT_FLT_ACC_SAMPLE >> 2);
MU_FUEL_CELL_FLT_ACC_SAMPLE = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER0) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER1) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER2) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER3);
/// Divide by 4 to obtain average value.
MU_FUEL_CELL_FLT_AVG_SAMPLE = (MU_FUEL_CELL_FLT_ACC_SAMPLE >> 2);
MI_L_U_FLT_ACC_SAMPLE = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER4) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER5) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER6) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER7);
/// Divide by 4 to obtain average value.
MI_L_U_FLT_AVG_SAMPLE = (MI_L_U_FLT_ACC_SAMPLE >> 2);
MI_L_V_FLT_ACC_SAMPLE = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER4) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER5) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER6) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER7);
/// Divide by 4 to obtain average value.
MI_L_V_FLT_AVG_SAMPLE = (MI_L_V_FLT_ACC_SAMPLE >> 2);
MI_L_W_FLT_ACC_SAMPLE = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER8) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER9) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER10) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER11);
/// Divide by 4 to obtain average value.
MI_L_W_FLT_AVG_SAMPLE = (MI_L_W_FLT_ACC_SAMPLE >> 2);
MI_TRAC_BATT_FLT_ACC_SAMPLE = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER8) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER9) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER10) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER11);
/// Divide by 4 to obtain average value.
MI_TRAC_BATT_FLT_AVG_SAMPLE = (MI_TRAC_BATT_FLT_ACC_SAMPLE >> 2);
MU_FUEL_CELL_PCH_FLT_ACC_SAMPLE = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER12) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER13);
/// Divide by 2 to obtain average value.
MU_FUEL_CELL_PCH_FLT_AVG_SAMPLE = (MU_FUEL_CELL_PCH_FLT_ACC_SAMPLE >> 1);
MU_TRAC_BATT_FLT_ACC_SAMPLE = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER12) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER13);
/// Divide by 2 to obtain average value.
MU_TRAC_BATT_PCH_FLT_AVG_SAMPLE = (MU_TRAC_BATT_FLT_ACC_SAMPLE >> 1);
REF_MI_H_2V5_ACC_SAMPLE = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER14) + ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER15);
/// Divide by 2 to obtain average value.
REF_MI_H_2V5_AVG_SAMPLE = (REF_MI_H_2V5_ACC_SAMPLE >> 1);
MT_COLD_PLATE_FLT_ACC_SAMPLE = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER14) + ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER15);
/// Divide by 2 to obtain average value.
MT_COLD_PLATE_FLT_AVG_SAMPLE = (MT_COLD_PLATE_FLT_ACC_SAMPLE >> 1);
/// Check if overflow has occurred
if(ADC_getInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1) == true)
{
ADC_clearInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1);
ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
}
/// Clear the interrupt flag
ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
/// Acknowledge the interrupt, see PIE Interrupt Vectors table
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
/// Disable interrupts and restore registers saved:
DINT;
HWREGH(PIECTRL_BASE + PIE_O_IER1) = tempPIEIER;
GPIO_writePin(4, 0); // for test
}__interrupt void isr_slow_tasks()
{
GPIO_writePin(39, 1); // for test
/// Save IER register on stack
volatile uint16_t tempPIEIER = HWREGH(PIECTRL_BASE + PIE_O_IER1);
/// Set the global and group priority to allow CPU interrupts with higher priority
IER |= M_INT1;
IER &= MINT1;
HWREGH(PIECTRL_BASE + PIE_O_IER1) &= MG1_7;
/// Enable Interrupts
Interrupt_clearACKGroup(0xFFFFU);
__asm(" NOP");
EINT;
if(CPUTimer_getTimerOverflowStatus(CPUTIMER0_BASE) == true)
{
CPUTimer_clearOverflowFlag(CPUTIMER0_BASE);
}
/// Update data and send frames if CAN request is detected.
can_request();
/// Read engineer variables and if request by user's is detected.
engineer_variable_and_request_forcing();
/// CMPSS monitoring to detect if protection is set.
cmpss_and_cold_plate_monitoring();
/// Driver return monitoring to detect if protection is set.
drv_monitoring();
/// See requirement REQ_SYST0038
//detection_coldplate(cold_plate_pin, &cold_plate_detect, &cold_plate_state_error, &cold_plate_state);
/// See requirement REQ_SYST0039
//detection_contactor(&k_line_batt, &k_line_batt_state_error, &trigger_state_kline_batt, &trigger_flag_kline_batt, &untrigger_flag_kline_batt);
/// See requirement REQ_SYST0040
//detection_contactor(&k_line_fuel_cell, &k_line_fc_state_error, &trigger_state_kline_fc, &trigger_flag_klinefc, &untrigger_flag_klinefc);
/// See requirement REQ_SYST0041
//detection_contactor(&k_pl_batt, &k_pl_batt_state_error, &trigger_state_kpl_batt, &trigger_flag_kpl_batt, &untrigger_flag_kpl_batt );
/// See requirement REQ_SYST0042
//detection_contactor(&k_pl_fuel_cell, &k_pl_fc_state_error, &trigger_state_kpl_fc, &trigger_flag_kpl_fc, &untrigger_flag_kpl_fc);
/// Get authorization for open contactor's if converter's are off since delay.
get_open_contactor_authorization(&open_contactor, &ack_inh_converter, &open_contactor_authorization);
/// Get authorization for close contactor's if converter's are off since delay and no monitoring are activate.
get_close_k_pl_contactor_authorization(&close_contactor, &step_global, &close_k_pl_authorization);
/// Actions at the state machine due to detection at the contactor's.
contactor_monitoring();
/// State machine
sm_main();
/// Detect if a request to exit RUN state is detected (stop or no loop choice or vehicle crash is nok or consign < min).
request_to_exit_run_state();
/// Acknowledge the interrupt, see PIE Interrupt Vectors table
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
/// Disable interrupts and restore registers saved:
DINT;
HWREGH(PIECTRL_BASE + PIE_O_IER1) = tempPIEIER;
GPIO_writePin(39, 0); // for test
}#ifndef PRIORITIZED_ISR_LEVELS_H
#define PRIORITIZED_ISR_LEVELS_H
#ifdef __cplusplus
extern "C" {
#endif
//
// Include the header file with software interrupt prioritization logic
//
#include "sw_interrupt_prioritization_logic.h"
//
// Mask for interrupt groups
//
#define M_INT1 0x0001 // INT1 Mask
#define M_INT2 0x0002 // INT2 Mask
#define M_INT3 0x0004 // INT3 Mask
#define M_INT4 0x0008 // INT4 Mask
#define M_INT5 0x0010 // INT5 Mask
#define M_INT6 0x0020 // INT6 Mask
#define M_INT7 0x0040 // INT7 Mask
#define M_INT8 0x0080 // INT8 Mask
#define M_INT9 0x0100 // INT9 Mask
#define M_INT10 0x0200 // INT10 Mask
#define M_INT11 0x0400 // INT11 Mask
#define M_INT12 0x0800 // INT12 Mask
#define M_INT13 0x1000 // INT13 Mask
#define M_INT14 0x2000 // INT14 Mask
#define M_DLOG 0x4000 // DLOGINT Mask
#define M_RTOS 0x8000 // RTOSINT Mask
//
// Interrupt Enable Register Allocation:
// Interrupts can be enabled/disabled using the CPU interrupt enable register
// (IER) and the PIE interrupt enable registers (PIEIER1 to PIEIER12).
//
//
// Set "Global" Interrupt Priority Level (IER register):
//
// The user must set the appropriate priority level for each of the CPU
// interrupts. This is termed as the "global" priority. The priority level
// must be a number between 1 (highest) to 16 (lowest). A value of 0 must
// be entered for reserved interrupts or interrupts that are not used.
//
// Note: The priority levels below are used to calculate the IER register
// interrupt masks MINT1 to MINT16.
//
// Note: The priority levels shown here may not make sense in a
// real application. This is for demonstration purposes only!!!
//
// The user should change these to values that make sense for
// their application.
//
// 0 = not used
// 1 = highest priority
// ...
// 16 = lowest priority
//
#define INT1PL 3 // Global Priority for Group1 Interrupts
#define INT2PL 1 // Global Priority for Group2 Interrupts
#define INT3PL 2 // Global Priority for Group3 Interrupts
#define INT4PL 0 // Global Priority for Group4 Interrupts
#define INT5PL 0 // Global Priority for Group5 Interrupts
#define INT6PL 0 // Global Priority for Group6 Interrupts
#define INT7PL 0 // Global Priority for Group7 Interrupts
#define INT8PL 0 // Global Priority for Group8 Interrupts
#define INT9PL 0 // Global Priority for Group9 Interrupts
#define INT10PL 0 // Global Priority for Group10 Interrupts
#define INT11PL 0 // Global Priority for Group11 Interrupts
#define INT12PL 0 // Global Priority for Group12 Interrupts
#define INT13PL 0 // Global Priority for INT13 (TINT1)
#define INT14PL 0 // Global Priority for INT14 (TINT2)
#define INT15PL 0 // Global Priority for DATALOG
#define INT16PL 0 // Global Priority for RTOSINT
//
// Set "Group" Interrupt Priority Level (PIEIER1 to PIEIER12 registers):
//
// The user must set the appropriate priority level for each of the PIE
// interrupts. This is termed as the "group" priority. The priority level
// must be a number between 1 (highest) to 16 (lowest). A value of 0 must
// be entered for reserved interrupts or interrupts that are not used.
//
// Note: The priority levels below are used to calculate the following
// PIEIER register interrupt masks:
// MG1_1 to MG1_16
// MG2_1 to MG2_16
// MG3_1 to MG3_16
// MG4_1 to MG4_16
// MG5_1 to MG5_16
// MG6_1 to MG6_16
// MG7_1 to MG7_16
// MG8_1 to MG8_16
// MG9_1 to MG9_16
// MG10_1 to MG10_16
// MG11_1 to MG11_16
// MG12_1 to MG12_16
//
// Note: The priority levels shown here may not make sense in a
// real application. This is for demonstration purposes only!!!
//
// The user should change these to values that make sense for
// their application.
//
// 0 = not used
// 1 = highest priority
// ...
// 16 = lowest priority
//
#define G1_1PL 1 // ADCA1_INT
#define G1_2PL 0 // Reserved
#define G1_3PL 0 // ADCC1_INT
#define G1_4PL 0 // XINT1_INT
#define G1_5PL 0 // XINT2_INT
#define G1_6PL 0 // Reserved
#define G1_7PL 2 // TIMER0_INT
#define G1_8PL 0 // WAKE_INT
#define G1_9PL 0 // Reserved
#define G1_10PL 0 // Reserved
#define G1_11PL 0 // Reserved
#define G1_12PL 0 // Reserved
#define G1_13PL 0 // Reserved
#define G1_14PL 0 // Reserved
#define G1_15PL 0 // Reserved
#define G1_16PL 0 // Reserved
#define G2_1PL 1 // EPWM1_TZ_INT
#define G2_2PL 2 // EPWM2_TZ_INT
#define G2_3PL 0 // EPWM3_TZ_INT
#define G2_4PL 3 // EPWM4_TZ_INT
#define G2_5PL 0 // EPWM5_TZ_INT
#define G2_6PL 0 // EPWM6_TZ_INT
#define G2_7PL 0 // EPWM7_TZ_INT
#define G2_8PL 0 // Reserved
#define G2_9PL 0 // Reserved
#define G2_10PL 0 // Reserved
#define G2_11PL 0 // Reserved
#define G2_12PL 0 // Reserved
#define G2_13PL 0 // Reserved
#define G2_14PL 0 // Reserved
#define G2_15PL 0 // Reserved
#define G2_16PL 0 // Reserved
#define G3_1PL 0 // EPWM1_INT
#define G3_2PL 0 // EPWM2_INT
#define G3_3PL 1 // EPWM3_INT
#define G3_4PL 0 // EPWM4_INT
#define G3_5PL 0 // EPWM5_INT
#define G3_6PL 0 // EPWM6_INT
#define G3_7PL 0 // EPWM7_INT
#define G3_8PL 0 // Reserved
#define G3_9PL 0 // Reserved
#define G3_10PL 0 // Reserved
#define G3_11PL 0 // Reserved
#define G3_12PL 0 // Reserved
#define G3_13PL 0 // Reserved
#define G3_14PL 0 // Reserved
#define G3_15PL 0 // Reserved
#define G3_16PL 0 // Reserved
#define G4_1PL 0 // ECAP1_INT
#define G4_2PL 0 // ECAP2_INT
#define G4_3PL 0 // ECAP3_INT
#define G4_4PL 0 // Reserved
#define G4_5PL 0 // Reserved
#define G4_6PL 0 // Reserved
#define G4_7PL 0 // Reserved
#define G4_8PL 0 // Reserved
#define G4_9PL 0 // Reserved
#define G4_10PL 0 // Reserved
#define G4_11PL 0 // ECAP3_2_INT
#define G4_12PL 0 // Reserved
#define G4_13PL 0 // Reserved
#define G4_14PL 0 // Reserved
#define G4_15PL 0 // Reserved
#define G4_16PL 0 // Reserved
#define G5_1PL 0 // EQEP1_INT
#define G5_2PL 0 // EQEP2_INT
#define G5_3PL 0 // Reserved
#define G5_4PL 0 // Reserved
#define G5_5PL 0 // CLB1_INT
#define G5_6PL 0 // CLB2_INT
#define G5_7PL 0 // Reserved
#define G5_8PL 0 // Reserved
#define G5_9PL 0 // Reserved
#define G5_10PL 0 // Reserved
#define G5_11PL 0 // Reserved
#define G5_12PL 0 // Reserved
#define G5_13PL 0 // Reserved
#define G5_14PL 0 // Reserved
#define G5_15PL 0 // Reserved
#define G5_16PL 0 // Reserved
#define G6_1PL 0 // SPIA_RX_INT
#define G6_2PL 0 // SPIA_TX_INT
#define G6_3PL 0 // SPIB_RX_INT
#define G6_4PL 0 // SPIB_TX_INT
#define G6_5PL 0 // Reserved
#define G6_6PL 0 // Reserved
#define G6_7PL 0 // Reserved
#define G6_8PL 0 // Reserved
#define G6_9PL 0 // Reserved
#define G6_10PL 0 // Reserved
#define G6_11PL 0 // Reserved
#define G6_12PL 0 // Reserved
#define G6_13PL 0 // Reserved
#define G6_14PL 0 // Reserved
#define G6_15PL 0 // Reserved
#define G6_16PL 0 // Reserved
#define G7_1PL 0 // DMA_CH1_INT
#define G7_2PL 0 // DMA_CH2_INT
#define G7_3PL 0 // DMA_CH3_INT
#define G7_4PL 0 // DMA_CH4_INT
#define G7_5PL 0 // DMA_CH5_INT
#define G7_6PL 0 // DMA_CH6_INT
#define G7_7PL 0 // Reserved
#define G7_8PL 0 // Reserved
#define G7_9PL 0 // Reserved
#define G7_10PL 0 // Reserved
#define G7_11PL 0 // FSITXA1_INT
#define G7_12PL 0 // FSITXA2_INT
#define G7_13PL 0 // FSIRXA1_INT
#define G7_14PL 0 // FSIRXA2_INT
#define G7_15PL 0 // Reserved
#define G7_16PL 0 // DCC0_INT
#define G8_1PL 0 // I2CA_INT
#define G8_2PL 0 // I2CA_FIFO_INT
#define G8_3PL 0 // I2CB_INT
#define G8_4PL 0 // I2CB_FIFO_INT
#define G8_5PL 0 // Reserved
#define G8_6PL 0 // Reserved
#define G8_7PL 0 // Reserved
#define G8_8PL 0 // Reserved
#define G8_9PL 0 // LINA0_INT
#define G8_10PL 0 // LINA1_INT
#define G8_11PL 0 // LINB0_INT
#define G8_12PL 0 // LINB1_INT
#define G8_13PL 0 // PMBUSA_INT
#define G8_14PL 0 // Reserved
#define G8_15PL 0 // Reserved
#define G8_16PL 0 // DCC1_INT
#define G9_1PL 0 // SCIA_RX_INT
#define G9_2PL 0 // SCIA_TX_INT
#define G9_3PL 0 // Reserved
#define G9_4PL 0 // Reserved
#define G9_5PL 0 // CANA0_INT
#define G9_6PL 0 // CANA1_INT
#define G9_7PL 0 // Reserved
#define G9_8PL 0 // Reserved
#define G9_9PL 0 // Reserved
#define G9_10PL 0 // Reserved
#define G9_11PL 0 // Reserved
#define G9_12PL 0 // Reserved
#define G9_13PL 0 // BGCRC_INT
#define G9_14PL 0 // Reserved
#define G9_15PL 0 // Reserved
#define G9_16PL 0 // HICA_INT
#define G10_1PL 0 // ADCA_EVT_INT
#define G10_2PL 0 // ADCA2_INT
#define G10_3PL 0 // ADCA3_INT
#define G10_4PL 0 // ADCA4_INT
#define G10_5PL 0 // Reserved
#define G10_6PL 0 // Reserved
#define G10_7PL 0 // Reserved
#define G10_8PL 0 // Reserved
#define G10_9PL 0 // ADCC_EVT_INT
#define G10_10PL 0 // ADCC2_INT
#define G10_11PL 0 // ADCC3_INT
#define G10_12PL 0 // ADCC4_INT
#define G10_13PL 0 // Reserved
#define G10_14PL 0 // Reserved
#define G10_15PL 0 // Reserved
#define G10_16PL 0 // Reserved
#define G11_1PL 0 // Reserved
#define G11_2PL 0 // Reserved
#define G11_3PL 0 // Reserved
#define G11_4PL 0 // Reserved
#define G11_5PL 0 // Reserved
#define G11_6PL 0 // Reserved
#define G11_7PL 0 // Reserved
#define G11_8PL 0 // Reserved
#define G11_9PL 0 // Reserved
#define G11_10PL 0 // Reserved
#define G11_11PL 0 // Reserved
#define G11_12PL 0 // Reserved
#define G11_13PL 0 // Reserved
#define G11_14PL 0 // Reserved
#define G11_15PL 0 // Reserved
#define G11_16PL 0 // Reserved
#define G12_1PL 0 // XINT3_INT
#define G12_2PL 0 // XINT4_INT
#define G12_3PL 0 // XINT5_INT
#define G12_4PL 0 // PBIST_INT
#define G12_5PL 0 // FMC_INT
#define G12_6PL 0 // Reserved
#define G12_7PL 0 // FPU_OVERFLOW_ISR
#define G12_8PL 0 // FPU_UNDERFLOW_ISR
#define G12_9PL 0 // Reserved
#define G12_10PL 0 // RAM_CORRECTABLE_ERROR_ISR
#define G12_11PL 0 // FLASH_CORRECTABLE_ERROR_ISR
#define G12_12PL 0 // RAM_ACCESS_VIOLATION_INT
#define G12_13PL 0 // SYS_PLL_SLIP_INT
#define G12_14PL 0 // Reserved
#define G12_15PL 0 // Reserved
#define G12_16PL 0 // Reserved
#ifdef __cplusplus
}
#endif /* extern "C" */
#endif
可能是一个糟糕的环境? 可以帮帮我吗?
谢谢
Damien


