自學TM4C123G學習經驗分享(一)
阿新 • • 發佈:2018-12-19
第一次寫部落格,可能會有很多不足之處,望海涵。 我是今年9月中旬第一次接觸ARM的微控制器,學生黨嘛比較窮就隨便拿了一塊老師的板子學。這個系列的板子韌體庫還是比較好下載的,但是相互之間的經驗交流比較少,相信你也遇到過。接下來我將分享我從建工程到能把led燈泡點亮的過程。 首先需要去keil的官網去下載TI公司的TM4C123G晶片包如下圖直接點安裝即可。
安裝完畢後,直新建工程然後會進入選擇晶片頁面點進去發現多一個晶片包TEXAS INSTRUMENTS選擇第二個TMC123GH6PM
這塊可能是因為我不太懂,所以我直接取消了,但是對後面並沒有影響。
然後點畫紅圈圈的按鈕進入新建資料夾
然後按照上圖的建立資料夾(這裡重點提一下要在arm工程的目錄下要新增inc,driverlib,utils這三個檔案在C盤的ti目錄下有直接複製過來就可以,沒有ti檔案目錄的是沒有安裝ti公司的韌體s,去ti官網直接下載)
start-up檔案是一個工程的啟動開始標頭檔案如果沒有starrt-up件則會出現這樣的警告。我在這個地方浪費了很多時間因為KEIL5不會自動給你新增這個標頭檔案需要你手動新增。而且inc,driverlib,裡面的檔案也需要自己手動新增,不新增會出現使用的GPIO函式不能被識別即使你把工程路徑設定好了。這點也必須要弄明白,Target的設定我就不說了網上教程很多。
.\Blink.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
設定好之後就可以寫程式了,我把我使用的例程貼出來
#include <stdint.h> #include <stdbool.h> #include <stdio.h> #include <stdarg.h> #include <string.h> #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_gpio.h" #include "inc/hw_sysctl.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "driverlib/fpu.h" //***************************************************************************** // // The error routine that is called if the driver library encounters an error. // //***************************************************************************** #ifdef DEBUG void __error__(char *pcFilename, unsigned long ulLine) { } #endif //***************************************************************************** // // The main application. // BLINK-LED // BLED--PF0 GLED-PA4 RLED-PD6 // //***************************************************************************** int main(void) { int i,j; // //ÉèÖÃϵͳʱÖÓΪ50MHz // SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); // // LEDµÆ³õʼ»¯ // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //PF0½âËø HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01; HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0); GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//ÉèÖÃÀ¶É«LEDµÆ³õʼ״̬ΪÃð SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4); GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);//ÉèÖÃÂÌÉ«LEDµÆ³õʼ״̬ΪÃð SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6); GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);//ÉèÖúìÉ«LEDµÆ³õʼ״̬ΪÃð while(1) { GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);//ÉèÖÃÀ¶É«LEDµÆ״̬ΪÁÁ for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//ÉèÖÃÀ¶É«LEDµÆ״̬ΪÃð for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<4);//ÉèÖÃÂÌÉ«LEDµÆ״̬ΪÁÁ for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);//ÉèÖÃÂÌÉ«LEDµÆ״̬ΪÃð for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0<<6);//ÉèÖúìÉ«LEDµÆ״̬ΪÁÁ for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);//ÉèÖúìÉ«LEDµÆ״̬ΪÃð for(i=1000;i>0;i--) for(j=600;j>0;j--); //Èí¼þÑÓʱ } }
第一次寫部落格寫的比較粗糙,有不懂得可以留言聯絡我,需要資料的也可以留言,或者留下聯絡方式我發給你。