我正在尝试使用TM4c123构建一个简单的逻辑分析器,但是任何时候使用函数ROM _....似乎都是错误(函数ROM_ ..的隐式)。有人知道为什么吗?
例如:
ROM_FPUEnable();
ROM_FPULazyStackingEnable();
// run from crystal, 80 MHz
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
// enable peripherals
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
// set UART pins
GPIOPinConfigure(0x00000001);
GPIOPinConfigure(0x00000401);
ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
// init PORTB
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIO_PORTB_DIR_R = 0x00;
GPIO_PORTB_DEN_R = 0xff;
// configure uart
ROM_UARTConfigSetExpClk(UART0_BASE, ROM_SysCtlClockGet(), 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
所有功能ROM都出错,为什么?我已经包含rom.h和rom_map.h
最佳答案
您正在使用driverlib(tivaware)和直接注册修改(DRM)的组合。使用一个或另一个,最好使用driverlib。
您实际上应该使用MAP_调用而不是ROM_。 ROM_已弃用,但仍可用于测试。不要将ROM_放入生产代码中。我知道示例仍使用ROM_。
无论如何,您都缺少ROM的头文件。如果要使用ROM_,则需要包含driverlib / rom.h。这就是为什么它抱怨隐式函数调用。未定义对ROM_somethingsomethingdarkside()的任何调用。您还需要包括stdint和stdbool,因为driverlib使用了这些c99类型。要使用地图调用,您需要包含driverlib / rom_map.h
您可能还需要包含driverlib / gpio.h,driverlib / sysctrl.h。不确定。我从来没有像您做过的那样混在一起,而且我总是先使用driverlib中的编译器进行调试,然后在知道一切正常后再使用MAP_作为前缀。我从来没有回过头来删除我在driverlib库中编译的包含文件。工具链似乎很聪明,即使我停止调用它们之后也无法将其编译。现在,我有点想尝试一下。
需要明确的是,ROM_或MAP_正在调用driverlib调用,而该调用来自片上ROM。
我怀疑您不确定使用的代码是什么,以及混合DRM和driverlib库的方式是什么。我强烈建议您花时间参加Tiva C的在线研讨会。这是一系列简短的视频和实验,可以清除所有这些问题。我故意神经迟钝,花了我一个周末。您可以在一天之内做到这一点,并且一天将度过美好的一天。它将为您节省很多倍。就代码编写器而言,它已经过时了一点,但是仍然可以使用。在我开始在这个平台上工作之前,我让所有学生都经过了它。
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_TIVA™_C_Series_TM4C123G_LaunchPad
编辑:是的,并且正如vitor指出的那样,您还需要该定义。
关于c - tiva c隐函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40575995/