2016-11-13 62 views
0

我想用TM4c123構建一個簡單的邏輯分析器,但是當我使用函數ROM _....時,它似乎是一個錯誤(隱含的函數ROM_ ..)任何人都知道爲什麼?tiva c隱式函數

例如:

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

+0

如果我沒有弄錯你的tiva微控制器已經有一些功能。然後它們被存儲在存儲器的一部分中。如果我沒有弄錯,必須有一個提供bytexas文件的文件,指出它們在內存中的存儲位置。如果你的程序給你這個錯誤,也許你沒有包含正確的文件 – morcillo

+1

而不是描述「我已經包含rom.h和rom_map.h」,發佈那樣的代碼。 – chux

回答

0

我會reccommend使用 「的DriverLib/gpio.h」 和 「的DriverLib/sysctl.h」 與TM4C器件引腳配置

0

你可能不定義您的目標設備。 嘗試在您的Makefile中添加諸如-DTARGET_IS_TM4C123_RB1之類的內容。 這個定義對於定義ROM_ *符號是必需的。

0

您正在使用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調用添加前綴。我還沒有回去刪除我的包含在編譯的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

編輯:是的,和比托爾指出,還需要定義爲好。