请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:C2000WARE 工具/软件:
您好: 
我正在使用 F28838D 上的 ERAD 来评测我的代码、v5.05 不起作用、但 v5.04 有。 我比较了这些文件并在 ERAD 中找到了这些文件: 
        HWREGH(base + ERAD_O_CTM_INPUT_SEL_2) =
                ((uint16_t)stop_event << ERAD_CTM_INPUT_SEL_2_STO_INP_SEL_S);
从此时更改:
        HWREGH(base + ERAD_O_CTM_INPUT_SEL_2) |=
                ((uint16_t)stop_event << ERAD_CTM_INPUT_SEL_2_STO_INP_SEL_S);
移除该或条形图似乎损坏了刻画器。 除了切换 C2000Ware 版本之外、其他任何操作都将修复此问题(相同的编译器配置 (-O4)、source、target 等)。 我没有时间对此进行调试、但希望我提供了足够的信息。
下面是我的代码片段、我发布了配置和周期性函数的编辑版本:
typedef	const	ERAD_Counter_Input_Event	cCntIpEvtE;
static
cCntIpEvtE CtrlIsrEvtN= (cCntIpEvtE)ERAD_BUSCOMP_BASE_TO_EVENT(ERAD_HWBP2_BASE);
static
cCntIpEvtE CtrlIsrEvtX= (cCntIpEvtE)ERAD_BUSCOMP_BASE_TO_EVENT(ERAD_HWBP3_BASE);
/// Configure ISR Begin event
static
void	McuCfgIsrBeginEvt(cU32 ref)											{
	const	ERAD_BusComp_Config	CtrlIsrN=									{
		.mask=			0,
		.reference=		ref,
		.comp_mode=		ERAD_BUSCOMP_COMPMODE_EQ,
		.enable_int=	0,
		.enable_stop=	0,
		.bus_sel=		ERAD_BUSCOMP_BUS_VPC
	};
	ERAD_configBusComp(ERAD_HWBP2_BASE, CtrlIsrN);
}
/// Configure ISR End event
static
void	McuCfgIsrEndEvt(cU32 ref)												{
	const	ERAD_BusComp_Config	CtrlIsrX=									{
		.mask=			0,
		.reference=		ref,
		.comp_mode=		ERAD_BUSCOMP_COMPMODE_EQ,
		.enable_int=	0,
		.enable_stop=	0,
		.bus_sel=		ERAD_BUSCOMP_BUS_VPC
	};
	ERAD_configBusComp(ERAD_HWBP3_BASE, CtrlIsrX);
}
/// Configure ISR Single timer
static
void	McuCfgIsrSingTmr()			{
	const	ERAD_Counter_Config CtrlSingK=								{
	    .event=	    	ERAD_EVENT_NO_EVENT,
        .event_mode=	ERAD_COUNTER_MODE_ACTIVE,
        .reference=		0,
        .rst_on_match=  0,
        .enable_int=	0,
        .enable_stop=	0
	};
  ERAD_configCounterInStartStopMode(ERAD_COUNTER2_BASE,CtrlSingK,CtrlIsrEvtN,CtrlIsrEvtX);
}
static
void	PeriodicTimerTask(McuS* mcu, CtrlS* ctrl)							{
    cU32	k= 	ERAD_getMaxCount(ERAD_COUNTER2_BASE);  // ALWAYS RETURNS 0.
    ERAD_setMaxCount(ERAD_COUNTER2_BASE,0);
    <snip>
}