项目开发环境为:S32DS_Power_v2017.R1,PE mul
tilink universal
简单功能介绍:使用eMIOS模块生成2个不同初始相位(0°,180°)的PWM波形。所以我写了一个函数来改变相关的寄存器如下:
void EMIOS_ResetUCCnt(void)
{
eMIOS_MCR_SET_FRZ(INST_EMIOS0_MC,1);
REG_WRITE32(&eMIOS[0]->UC[PWM1_eMIOS_CHN].CNT,0);
REG_WRITE32(&eMIOS[0]->UC[PWM2_eMIOS_CHN].CNT,500);
eMIOS_MCR_SET_FRZ(INST_EMIOS0_MC,0); 我项目中遇到的问题说明
:
(1) 如果在调试模式下单步执行上述函数“EMIOS_ResetUCCnt()”,则2个不同相位的PWM脉冲成功输出。但是在没有断点的情况下全速运行,PWM 无法改变它们的相位。
图1。单步运行
图2。单步运行结果(不同阶段)
图3。全速奔跑
图4。全速运行结果(同相)
(2)如果工程中加入了第二核相关的预处理器(DEBUG_SECONDARY_CORES、TURN_ON_CPU1),并以全速模式运行,PWM输出是正确的(图2)。
(3) 在步骤(2)的基础上,程序在调试模式下运行成功,但随后停止调试模式并重启板子,PWM输出错误(图4)。
据我了解,问题的根本原因是:
函数“EMIOS_ResetUCCnt()”是否成功执行。为什么第二个核心的预处理器会影响第一个核心。