TI论坛
直播中

岳臻俊

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

f28m35开发板运行controlSuite的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灯不闪了。
请问,这是什么原因?

回帖(5)

李秋年

2018-10-11 15:20:50
在函数的注释中有说明,The Device_cal function MUST be called for the ADC and oscillators to function according to specification. The clocks to the ADC MUST be enabled before calling this function
举报

岳臻俊

2018-10-11 15:28:14
引用: szoldman 发表于 2018-10-11 20:08
在函数的注释中有说明,The Device_cal function MUST be called for the ADC and oscillators to function according to specification. The clocks to the ADC MUST be enabled before calling this function

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时钟有关系?
谢谢!
举报

李秋年

2018-10-11 15:46:19
引用: IC大当家ac 发表于 2018-10-11 20:16
Hi, Hank, 多谢回答!
我的疑问不在于Device_cal的调用,我并没有把Device_cal()的调用注释掉,包括Device_cal调用前的打开ADC时钟的代码(AnalogClockEnable())和调用后的关闭ADC时钟的代码(AnalogClockDisable());这些代码都在 InitSysCtrl()中;
我注释掉的部分是void InitPeripheralClocks()中:(斜体部分)

InitSysCtrl中的这三条语句不能注释掉,不过InitPeripheralClocks中的这三个语句是可以注释掉的,注释掉之后在线调试程序仍然正常工作,LED仍能闪烁。你的程序不能工作应该跟注释掉这三句没有关系。
举报

岳臻俊

2018-10-11 15:58:54
引用: szoldman 发表于 2018-10-11 20:34
InitSysCtrl中的这三条语句不能注释掉,不过InitPeripheralClocks中的这三个语句是可以注释掉的,注释掉之后在线调试程序仍然正常工作,LED仍能闪烁。你的程序不能工作应该跟注释掉这三句没有关系。

Hi, Hank, 多谢回答!
我确实只注释掉InitPeripheralClocks()中的这三个语句;
这样子,我回头检查一下我的代码,确认一下,是否有哪些遗漏。如果有疑问再从这个帖子主题向你请教。
如果没有疑问,我再把这个问题给结案。

再次谢谢!
举报

更多回帖

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