由於筆者是使用MDK-ARM開發的版本是4.72,因此須要安裝這個工具,具體在哪裏下載自行放狗或問度娘。除了這個重要工具覺得,還須要安裝Atmel官方的Atmel Studio,爲何安裝這個軟件呢?其實不安裝也是能夠的,可是不安裝須要自備一條串口線,板上自帶的USB CDC就不能用了,由於找不到驅動。安裝Atmel Studio之後,會自動安裝USB驅動,這事鏈接板子PC就識別並安裝驅動了,安裝好後在「設備管理器」中會看到枚舉出以下兩個設備:編程
這裏的COM8是本身PC枚舉的,不一樣的PC得出的端口號會不一樣。若是有這兩個,說明你的板子已經能夠用了,若是隻有前面一個,那也是能夠下載程序的。工具
關於軟件的安裝我就很少說了,都是一直點下一步就OK的。接下來開始搭建咱們的第一個工程,也就是所說的「工程模板」。下去我都是以這個爲模板進行其餘例程的開發。測試
首先新建一個文件夾,命名爲「工程模板」,打開文件夾,在裏面依次創建「Applications」、「Drivers」、「CMSIS」、「Listing」和「build」五個文件夾,以下圖:ui
簡要說明一下他們的用途,Applications文件是用來存放用戶應用程序的;Drivers用來存放開發的各類驅動;CMSIS存放芯片相關的文件,如啓動文件等;build主要存放編譯輸出的一些文件;Listing用於存放連接輸出的文件。3d
創建好這些文件夾之後,咱們開始創建工程。啓動MDK軟件,點擊菜單「Project」菜單下的「New uVision Project」新建一個項目,保存到工程模板文件夾下,項目名稱爲「Project」,選擇CPU爲Atmel公司的SAM4N16C,以下圖:blog
點擊「OK」完成工程建立。接下來要對工程進行一些配置,首先要把須要的芯片相關的頭文件和啓動文件複製到剛剛創建的「CMSIS」文件夾中。到哪裏去複製芯片相關頭文件好啓動文件呢?這是不少人比較疑惑的事情。其實有兩個方法能夠拿到這些文件,第一種方法是到Atmel提供的軟件包裏面去找;還有一種是到MDK的安裝目錄裏面去找。這裏咱們選擇後者。索引
打開MDK的安裝目錄,在「\ARM\INC\Atmel\SAM4N」下面就是須要的頭文件,以下圖:ip
在咱們的工程中的CMSIS文件夾下創建一個「include」子文件夾,並將這些頭文件複製到該文件夾下;接下來是啓動文件,打開「\ARM\Startup\Atmel\SAM4N」,有兩個文件,一個是啓動彙編,一個是C文件,裏面有SAM4N啓動時配置的一些操做,如時鐘配置等。將這兩個文件複製到「CMSIS」文件夾下的Source文件夾。也許有人會問,爲何須要複製這些文件到工程中呢?這些是芯片必須的文件,其實不復制過來MDK也會本身去索引這些文件,可是這樣作能夠避免工程被拷貝到其餘沒有安裝MDK或MDK版本低的地方還能夠找到這些文件。開發
接下來要配置一下MDK工程的文件組,分別創建「Applications」、「CMSIS」和「Drivers」三個文件組,以下圖:get
同時給「Applications」添加一個新文件main.c,而後將「startup_SAM4N.s」和「system_SAM4N.c」文件添加到「CMSIS」文件組下,以下圖:
打開「Target Options」,選擇輸出文本到「output」標籤,選擇輸出文件到「build」文件夾以下圖:
點擊「Listing」標籤,設置輸出到「Listing」文件夾。點擊「C/C++」標籤,在「Define」中添加「__SAM4N16C__」宏定義,並在「Include Paths」中添加「Applications」、「CMSIS\include」和「Drivers」三個目錄,以下圖:
點擊「Debug」標籤,選擇使用「CMSIS-DAP Debugger」仿真器仿真,以下圖:
點擊「Utilities」標籤,勾選使用Debug Driver進行Flash編程,以下圖。
到此,新建的工程算是配置完成,接下來就是小試牛刀的時候了,打開main.c,開始代碼的編寫,看了一下數據手冊,隨便寫了個代碼測試,以下:
#include "sam4n.h"
#define LED_PIN 14
void delay(uint32_t x)
{
uint32_t a, b;
for (a = 0; a < 5000; a++)
{
for (b = 0; b < x; b++);
}
}
int main(void)
{
/*使能LED管腳*/
PIOB->PIO_PER |= (0x01 << LED_PIN);
/*使能LED管腳輸出*/
PIOB->PIO_OER |= (0x01 << LED_PIN);
while (1)
{
/*輸出低電平,點亮LED*/
PIOB->PIO_CODR = (0x01 << LED_PIN);
/*延時*/
delay(300);
/*輸出高電平,關閉LED*/
PIOB->PIO_SODR = (0x01 << LED_PIN);
/*延時*/
delay(300);
}
}
點擊編譯,點擊工具欄上的「Download」下載到板子,果真燈閃動起來了,還真是誤打誤撞,太easy了。