TI中文支持网
TI专业的中文技术问题搜集分享网站

F28M35 Dual System Examples — blinky

我使用ti官方f28m35开发板运行controlSuite的blinky例程,运行结果正常;

但是我对代码的一些部分有点疑问:

在代码中有如下调用关系:

main()

—->

InitSysCtrl();              //F28M35x_SysCtrl.c

—->

InitPeripheralClocks();

当我打开InitPeripheralClocks()的代码时,发现它的代码如下:

void InitPeripheralClocks(void)
{

……

EALLOW;
while((**AnalogClockEnable)(AnalogConfig1,ADC1_ENABLE));
// Enable ADC 1

while((**AnalogClockEnable)(AnalogConfig2,ANALOGCONFIG2ALL));
// Enable  ADC2, COMP1,2,3,4,5,6

(**ReadAnalogClockStatus)(AnalogConfig2);                                                          // Wait for AnalogClockEnable function to finish

……

}

我认为这个例程(blinky)和adc功能无关,所以我就试着把斜体部分的三行代码(从第一个while()行到(**ReadAnalogClockStatus)()行) 注释掉,

结果我发现程序无法正常工作了,led灯不闪了。

请问,这是什么原因?

Johnson Chen2:

回复 Hank Zhao:

Hi, Hank, 多谢回答!

我的疑问不在于Device_cal的调用,我并没有把Device_cal()的调用注释掉,包括Device_cal调用前的打开ADC时钟的代码(AnalogClockEnable())和调用后的关闭ADC时钟的代码(AnalogClockDisable());这些代码都在 InitSysCtrl()中;

我注释掉的部分是void InitPeripheralClocks()中:(斜体部分)

void InitPeripheralClocks(void){

// LOSPCP prescale register settings, normally it will be set to default // values EALLOW; SysCtrlRegs.LOSPCP.all = 0x0002; EDIS;

EALLOW; while((**AnalogClockEnable)(AnalogConfig1,ADC1_ENABLE)); // Enable ADC 1 while((**AnalogClockEnable)(AnalogConfig2,ANALOGCONFIG2ALL)); // Enable ADC 2, COMP1,2,3,4,5,6 (**ReadAnalogClockStatus)(AnalogConfig2); // Wait for AnalogClockEnable function to finish

……

}

请问,是不是这部分代码和Device_cal()也有关系?

或者开发板上控制的LED灯的GPIO(PC6_GPIO70和PC6_GPIO71)也和ADC时钟有关系?

谢谢!

我使用ti官方f28m35开发板运行controlSuite的blinky例程,运行结果正常;

但是我对代码的一些部分有点疑问:

在代码中有如下调用关系:

main()

—->

InitSysCtrl();              //F28M35x_SysCtrl.c

—->

InitPeripheralClocks();

当我打开InitPeripheralClocks()的代码时,发现它的代码如下:

void InitPeripheralClocks(void)
{

……

EALLOW;
while((**AnalogClockEnable)(AnalogConfig1,ADC1_ENABLE));
// Enable ADC 1

while((**AnalogClockEnable)(AnalogConfig2,ANALOGCONFIG2ALL));
// Enable  ADC2, COMP1,2,3,4,5,6

(**ReadAnalogClockStatus)(AnalogConfig2);                                                          // Wait for AnalogClockEnable function to finish

……

}

我认为这个例程(blinky)和adc功能无关,所以我就试着把斜体部分的三行代码(从第一个while()行到(**ReadAnalogClockStatus)()行) 注释掉,

结果我发现程序无法正常工作了,led灯不闪了。

请问,这是什么原因?

Johnson Chen2:

回复 Hank Zhao:

Hi, Hank, 多谢回答!

我确实只注释掉InitPeripheralClocks()中的这三个语句;

这样子,我回头检查一下我的代码,确认一下,是否有哪些遗漏。如果有疑问再从这个帖子主题向你请教。

如果没有疑问,我再把这个问题给结案。

再次谢谢!

我使用ti官方f28m35开发板运行controlSuite的blinky例程,运行结果正常;

但是我对代码的一些部分有点疑问:

在代码中有如下调用关系:

main()

—->

InitSysCtrl();              //F28M35x_SysCtrl.c

—->

InitPeripheralClocks();

当我打开InitPeripheralClocks()的代码时,发现它的代码如下:

void InitPeripheralClocks(void)
{

……

EALLOW;
while((**AnalogClockEnable)(AnalogConfig1,ADC1_ENABLE));
// Enable ADC 1

while((**AnalogClockEnable)(AnalogConfig2,ANALOGCONFIG2ALL));
// Enable  ADC2, COMP1,2,3,4,5,6

(**ReadAnalogClockStatus)(AnalogConfig2);                                                          // Wait for AnalogClockEnable function to finish

……

}

我认为这个例程(blinky)和adc功能无关,所以我就试着把斜体部分的三行代码(从第一个while()行到(**ReadAnalogClockStatus)()行) 注释掉,

结果我发现程序无法正常工作了,led灯不闪了。

请问,这是什么原因?

Johnson Chen2:

回复 Johnson Chen2:

Hi, Hank.

我又试了一下,如果只是把这三行代码注释掉,程序执行起来确实不正常,由C28控制的 LED0不闪;

但是我又试了一下,把闪灯的代码由

LED_0_DAT_REG = 0;

LED_0_DAT_REG = 1;

改成LED_0_TOGGLE = 1;

程序就能正常工作。

多谢!你说的没错!

赞(0)
未经允许不得转载:TI中文支持网 » F28M35 Dual System Examples — blinky
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1