This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F2.8377万S:新的项目创建问题

Guru**** 2044370 points
Other Parts Discussed in Thread: CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/574907/ccs-tms320f28377s-new-project-creation-issue

部件号:TMS320F2.8377万S
主题:controlSUITE中讨论的其他部件

工具/软件:Code Composer Studio

大家好,  

我使用的 是LAUNCHTXL-2.8377万S开发板。  我所面临的问题是,在创建了我的项目并链接了来自控制套件的所有支持文件之后。  项目中没有错误,我可以启动 代码,但它没有出现  

while (ClkCfgRegs.SYSPLLSTS.bit.locks!= 1)  

在下述方案中

void InitSysPll (UINT16 Clock_source,UINT16 imult,UINT16 fmult,UINT16 divsel)

UINT16 SCSR,WDCR,WDWCR,intStatus;
IF ((Clock_source == ClkCfgRegs.CLKSRCCTL1.bit.OSCCLKSRCSEL)&&
(imult == ClkCfgRegs.SYSPLLMULT.bit.IMULT)&&
(fmult == ClkCfgRegs.SYSPLLMULT.bit.FMULT)&&
(divsel == ClkCfgRegs.SYSCLKDIVsel.bit.PLLSYSCLKDIV))

//
//所有内容均按要求设置,所以只需返回
//
返回;
}

IF(clock_source != ClkCfgRegs.CLKSRCCTL1.bit.OSCCLKSRCSEL)

开关(时钟源)

案例INT_OSC1:
SysIntOscar 1Sel();
中断;

案例INT_OSC2:
SysIntOscar 2Sel();
中断;

案例XTAL_OSC:
SysXtalssiosel ();
中断;
}
}

EALLOW;
IF(imult != ClkCfgRegs.SYSPLLMULT.bit.IMULT ||
fmult != ClkCfgRegs.SYSPLLMULT.bit.FMULT)

UINT16 I;

//
//此位只能由POR重置
//
IF (DevCfgRegs.SYSDBGCTL.bit.bit_0 == 1)

//
//用户可以选择在此处插入处理程序代码。 这只会
//如果在系统发生故障后进行了看门狗重置,则执行该操作
// PLL初始化。 有关详细信息,请参阅设备用户指南
//信息。
//
//如果应用程序具有看门狗复位处理程序,则该位应该
//检查以确定是否因为以下原因而重置了看门狗
//。
//
//此处的任何操作都不会继续正常重试PLL。
//
}

//
//绕过PLL并将分禾器设置为/1
//
ClkCfgRegs.SYSPLLCTL1.bit.PLLCLKEN = 0;
ASM (" RPT #20 || NOP");
ClkCfgRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = 0;

//
//锁定PLL五次。 这有助于确保成功启动。
// 5是建议的最小值。 用户可以增加此设置
//数字取决于分配的系统初始化时间。
//
(i = 0;i < 5;I++)

//
//关闭PLL
//
ClkCfgRegs.SYSPLLCTL1.bit.PLLEN = 0;
ASM (" RPT #20 || NOP");

//
//写入倍频,自动打开PLL
//
ClkCfgRegs.SYSPLLMULT.ALL =((fmult << 8U)| imult);

//
//等待SYSPLL锁定计数器
//
while (ClkCfgRegs.SYSPLLSTS.bit.locks!= 1)

//
//取消注释以服务监视程序
//
// ServiceDog ();
}
}
}

//
//设置分频器以产生较慢的输出频率,从而限制电流增加
//
IF (divsel!= PLLCLK_BY_126)

ClkCfgRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = DIVsel + 1;
其他

ClkCfgRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = DIVsel;
}

//
//*注意*
//建议使用以下看门狗代码来监控PLL
//启动顺序。 如果您的应用程序已清除监视程序
// SCRS[WDOVERRIDE]位无法完成此操作。 建议不要清除
//此位直到启动PLL之后。
//

//
//备份用户监视器
//
SCSR = WdRegs.SCSR.ALL;
wdcr = WdRegs.wdccr.all;
WDWCR = WdRegs.WDWCR.ALL;

//
//禁用窗口功能,重置计数器
//
EALLOW;
WdRegs.WDWCR.ALL = 0x0;
WdRegs.WDKEY.bit.WDKEY = 0x55;
WdRegs.WDKEY.bit.WDKEY = 0xAA;

//
//禁用全局中断
//
intStatus =__disable_interrupts();

//
//配置看门狗重置并以最大频率运行
//
WdRegs.SCSR.ALL = 0x0;
WdRegs.wdccr.all = 0x28;

//
//此位只能通过加电重置(POR)进行重置,不会被清除
//通过WD重置
//
DevCfgRegs.SYSDBGCTL.bit.bit_0 = 1;

//
//从系统PLL时钟输入启用PLLSYSCLK
//
ClkCfgRegs.SYSPLLCTL1.bit.PLLCLKEN = 1;

//
//延迟以确保系统在清除状态位之前从PLL计时
//
ASM (" RPT #20 || NOP");

//
//清除位
//
DevCfgRegs.SYSDBGCTL.bit.bit_0 = 0;

//
//恢复用户看门狗,首先重置计数器
//
WdRegs.WDKEY.bit.WDKEY = 0x55;
WdRegs.WDKEY.bit.WDKEY = 0xAA;

WDCR || 0x28;//设置WD键位始终为0
WdRegs.wdccr.all = wdcr;
WdRegs.WDWCR.ALL = WDWCR;
WdRegs.SCSR.ALL = SCSR & 0xFFFE;//掩码写入位0 (W1toClr)

//
//恢复ST1[INTM]的状态。 这是由__disable_interrupts()设置的。
//原型。
//
IF (!(intStatus和0x1))

EINT;
}

//
//恢复ST1[DBGM]的状态。 这是由__disable_interrupts()设置的。
//原型。
//
IF (!(intStatus和0x2))

ASM (" CLRC DBGm");
}

//
// 200 PLLSYSCLK延迟,使电压调节器能够在之前稳定下来
//增加整个系统时钟频率。
//
ASM (" RPT #200 || NOP");

//
//将分隔符设置为用户值
//
ClkCfgRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = DIVsel;
EDIS;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manoj
    您是否能够找到问题? 您是否尝试过任何具有最新器件支持的controlSUITE示例?

    如果您发现设备的任何controlSUITE示例存在相同的问题,请告知我们,如果没有,那么您能否检查controlSUITE示例代码与您的代码之间有何区别?

    此致
    Santosh Athuru