工具/软件:TI-RTOS
在 TM4C1294NCPDT 微控制器+ TI-RTOS 环境 中, 为了在 C 运行时初始化之前启用外部存储器,我们 将使用 .cfg 中的“RESET 函数”:
VAR 启动= xdc.useModule('xdc.runtime.Startup');
VAR Reset = xdc.useModule("xdc.runtime.Reset");
reset.Fxns[Reset.Fxns.length++]="&SDRAM_init";
工作正常。 当 SDRAM_INIT 函数 调用 诸如 "SysCtlPeripheralEnable"、" GPIOPinConfigure" 等 GPIO 函 数时、会发生问题、它会生成一个异常来停止程序。
void SDRAM_init (void) { SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);/**< ERTITA EPI00xf0001000 * GPIOPinConfigure (GPIO_PH0_EPI0S0);/**< 29| PH0|EPI0S0*/ GPIOPinConfigure (GPIO_PH1_EPI0S1);/**< 30| PH1|EPI0S1*/ GPIOPinConfigure (GPIO_PH2_EPI0S2);/**< 31| PH2|EPI0S2*/ GPIOPinConfigure (GPIO_PH3_EPI0S3);/**< 32| PH3|EPI0S3*/ GPIOPinTypeEPI (GPIO_Porth_BASE、EPI_Porth_Pins);/**< iniciza porta H como EPI* GPIOPinConfigure (GPIO_PC7_EPI0S4);/**< 22 | PC7 | EPI0S4 */ GPIOPinConfigure (GPIO_PC6_EPI0S5);/**< 23 | PC6 | EPI0S5 */ GPIOPinConfigure (GPIO_PC5_EPI0S6);/**< 24 | PC5 | EPI0S6 */ GPIOPinConfigure (GPIO_PC4_EPI0S7);/**< 25 | PC4 | EPI0S7 */ GPIOPinTypeEPI (GPIO_PORTC_BASE、EP_PORTC_Pins);/**<初值端口 A C como EPI* GPIOPinConfigure (GPIO_PA6_EPI0S8);/**< 40 | PA6 | EPI0S8 */ GPIOPinConfigure (GPIO_PA7_EPI0S9);/**< 41 | PA7 | EPI0S9 */ GPIOPinTypeEPI (GPIO_Porta_base、EPI_Porta_Pins);/**<初值端口 A COMO EPI* GPIOPinConfigure (GPIO_PG1_EPI0S10);/**< 50 | PG1 | EPI0S10 */ GPIOPinConfigure (GPIO_PG0_EPI0S11);/**< 49 | PG0 | EPI0S11 */ GPIOPinTypeEPI (GPIO_PORTG_base、EP_PORTG_Pins);/**<初版端口 G como EPI* GPIOPinConfigure (GPIO_PM3_EPI0S12);/**< 75 | PM3 | EPI0S12 */ GPIOPinConfigure (GPIO_PM2_EPI0S13);/**< 76 | PM2 | EPI0S13 */ GPIOPinConfigure (GPIO_PM1_EPI0S14);/**< 77 | PM1 | EPI0S14 */ GPIOPinConfigure (GPIO_PM0_EPI0S15);/**< 78 | PM0 | EPI0S15 */ GPIOPINTypeEPI (GPIO_PORTM_BASE、EPI_PORTM_Pins);/**<初值端口 M como EPI* GPIOPinConfigure (GPIO_PL0_EPI0S16);/**< 81 | PL0 | EPI0S16 */ GPIOPinConfigure (GPIO_PL1_EPI0S17);/**< 82 | PL1 | EPI0S17 */ GPIOPinConfigure (GPIO_PL2_EPI0S18);/**< 83 | PL2 | EPI0S18 */ GPIOPinConfigure (GPIO_PL3_EPI0S19);/**< 84 | PL3 | EPI0S19 */ GPIOPinTypeEPI (GPIO_PORTL_base、EPI_PORTL_PINS);/**<初值端口 A L COMO EPI* GPIOPinConfigure (GPIO_PB3_EPI0S28);/**< 92 | PB3 | EPI0S28 */ GPIOPinTypeEPI (GPIO_PORTB_BASE、EP_PORTB_PINS);/**< iniciza porta B como EPI* GPIOPinConfigure (GPIO_PN2_EPI0S29);/**< 109 | PN2 | EPI0S29 */ GPIOPinConfigure (GPIO_PN3_EPI0S30);/**< 110 | PN3 | EPI0S30 */ GPIOPinTypeEPI (GPIO_PORTN_BASE、EP_PORTN_PINS);/**<初值端口 N COMO EPI* GPIOPinConfigure (GPIO_PK5_EPI0S31);/**< 62 | PK5 | EPI0S31 */ GPIOPinTypeEPI (GPIO_PORTK_base、EPI_PORTK_PINS);/**<初值端口 K como EPI* EPIDividerSet (EPI0_BASE、1);/**<配置基本时钟去 EPI* EPIModeSet (EPI0_BASE、EPI_MODE_SDRAM);/**<配置 EPI COMO SDRAM* EPIConfigSDRAMSet (EPI0_BASE、(EPI_SDRAM_CORE_FREQ_50_100 | EPI_SDRAM_FULL_POWER | EPI_SDRAM_SIZE 64MBIT)、468);/**< 256MB A 时钟*/ EPIMapAddressSet (EPI0_BASE、EPIADDR_SIZE | EPIREG_RAM_SDRAM_SDRAM| EPIRAM_REGAURAM* + 6) *+ EPIRAM_REGOR_ADDR_6 + máximo μ configuração μ s + ENCO_ADDR_ORTS_RAM*+ S + ENCO_ADDR_RAM*+ S + S + ENTR_ADDR_RAM* 1 (1)+ S + S + ENCO_ADDR_RA
当 SDRAM_INIT 直接从 main 调用时、该初始化序列工作正常、 但我们需要在 C Runtime 初始化之前执行该操作 、以便将其用于静态变量。 适当的链接器设置
我问 在 C 运行时 初始化之前是否无法调用这些"GPIO"函数 ?
在 C Runtime 初始化之前,是否有其它方法初始化引脚以启用外部存储器。