NXP MCU 技术论坛
直播中

张霞

7年用户 994经验值
私信 关注
[问答]

MPC5748G项目调试时只能单步运行,不能全速运行的原因?

项目开发环境为:S32DS_Power_v2017.R1,PE multilink 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()”是否成功执行。为什么第二个核心的预处理器会影响第一个核心。

更多回帖

发帖
×
20
完善资料,
赚取积分