Part Number:TMS320F28377DOther Parts Discussed in Thread:C2000WARE
我用一个系统用的是28377D芯片,使用外部有源晶振20Mhz但使用driverlib.lib例程点亮led等程序一直死在时钟设置
static void
SysCtl_pollCpuTimer(void)
{
uint16_t loopCount = 0U;
//
// Delay for 1 ms while the XTAL powers up
//
// 2000 loops, 5 cycles per loop + 9 cycles overhead = 10009 cycles
//
SysCtl_delay(2000);
//
// Clear and overflow cpu timer 2 4x to guarantee operation
//
do
{
//
// Wait for cpu timer 2 to overflow
//
while(CPUTimer_getTimerOverflowStatus(CPUTIMER2_BASE)==false);
{
//
// If your application is stuck in this loop, please check if the
// input clock source is valid.
//
}
//
// Clear cpu timer 2 overflow flag
//
CPUTimer_clearOverflowFlag(CPUTIMER2_BASE);
//
// Increment the counter
//
loopCount++;
}while(loopCount < 4U);
}
函数内。
时钟配置如下
#define DEVICE_OSCSRC_FREQ 20000000U
//
// Define to pass to SysCtl_setClock(). Will configure the clock as follows:
// PLLSYSCLK = 20MHz (XTAL_OSC) * 20 (IMULT) * 1 (FMULT) / 2 (PLLCLK_BY_2)
//
#define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(20) | \
SYSCTL_FMULT_NONE | SYSCTL_SYSDIV(2) | \
SYSCTL_PLL_ENABLE)
//
// 200MHz SYSCLK frequency based on the above DEVICE_SETCLOCK_CFG. Update the
// code below if a different clock configuration is used!
//
#define DEVICE_SYSCLK_FREQ ((DEVICE_OSCSRC_FREQ * 20 * 1) / 2)
请问ti工程师还有没有别的情况会死在这个函数的循环内
Green Deng:
你好,你是说测试TI的LED例程的时候出现一直死在时钟设置的情况?
有没有测试过芯片的供电电压值、晶振稳定性甚至电源的上电顺序?
此外,有没有对程序的时钟配置部分代码做过修改?
,
qiangguang li:
我测试了我的晶振,是正常的,我用相同的配置同一个硬件用TI中C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2837xd\examples\cpu1的例程是可以正常运行的但是用devicelib库内的例程就死到这个函数了,以前的库设置时钟函数内好像没有相关设置定时器的代码
,
qiangguang li:
我之后有实验了一下把SysCtl_selectXTAL()函数内用到SysCtl_pollCpuTimer()函数的地方屏蔽掉程序即可正常运行。这样做有没有什么危害
,
Green Deng:
很抱歉,完全没有找到这个函数的信息,我也没办法判断这个函数屏蔽是否有什么危害。
,
qiangguang li:
这个函数在driverlib.lib内的sysctl.c内