Part Number:TMS320F28377D
在syscfg里配置好模块功能后,它会自动生成如下的初始化代码,我的问题是如何调整这些初始化代码的顺序?比如,我希望先初始化GPIO,再初始化EPWM。
void Board_init() { EALLOW; PinMux_init(); INPUTXBAR_init(); SYNC_init(); ADC_init(); CAN_init(); CPUTIMER_init(); EPWM_init(); GPIO_init(); SCI_init(); SPI_init(); WATCHDOG_init(); XINT_init(); INTERRUPT_init(); EDIS; }
Yale Li:
生成代码的顺序是不能设置的,你可以在帖出来的这个函数中手动修改。但有些功能的配置可能会与配置的顺序相关,修改的时候需要多加注意。
,
HWAN XU:
不行,每次编译syscfg都会自动重新生成代码,把我的修改覆盖掉
,
Yale Li:
我试了一下,确实是这样。
为什么需要改变初始化的顺序?
,
HWAN XU:
为了安全啊,上电第一时间先把IO初始化到安全状态,然后再初始化EPWM,确保EPWM不会错误输出(即便EPWM有非预期的输出,也会因为IO事先让外部驱动芯片处于输出未使能的安全状态)
,
HWAN XU:
给你们看一下ST家的配置软件,它是可以选择初始化顺序的
,
Yale Li:
HWAN XU 说:给你们看一下ST家的配置软件,它是可以选择初始化顺序的
这个我反馈一下。
HWAN XU 说:为了安全啊,上电第一时间先把IO初始化到安全状态,然后再初始化EPWM,确保EPWM不会错误输出(即便EPWM有非预期的输出,也会因为IO事先让外部驱动芯片处于输出未使能的安全状态)
如果是EPWM的话,这点可以保证,不会有错误输出。因为在初始化EPWM前,会关闭EPWM的外设时钟,配置完成后再使能,这个操作一般是在main函数中进行的,重新编译不会覆盖,你还可以把所有的初始化都完成后,再使能外设时钟。