一、需要安装的软件:

因为笔者是使用MDK-ARM开发的版本是4.72,所以需要安装这个工具,具体在哪里下载自行放狗或问度娘。除了这个重要工具以为,还需要安装Atmel官方的Atmel Studio,为什么安装这个软件呢?其实不安装也是可以的,但是不安装需要自备一条串口线,板上自带的USB CDC就不能用了,因为找不到驱动。安装Atmel Studio以后,会自动安装USB驱动,这事连接板子PC就识别并安装驱动了,安装好后在“设备管理器”中会看到枚举出如下两个设备:

这里的COM8是自己PC枚举的,不同的PC得出的端口号会不同。如果有这两个,说明你的板子已经可以用了,如果只有前面一个,那也是可以下载程序的。

二、创建工程模板:

关于软件的安装我就不多说了,都是一直点下一步就OK的。接下来开始搭建我们的第一个工程,也就是所说的“工程模板”。下去我都是以这个为模板进行其他例程的开发。

首先新建一个文件夹,命名为“工程模板”,打开文件夹,在里面依次建立“Applications”、“Drivers”、“CMSIS”、“Listing”和“build”五个文件夹,如下图:

简要说明一下他们的用途,Applications文件是用来存放用户应用程序的;Drivers用来存放开发的各种驱动;CMSIS存放芯片相关的文件,如启动文件等;build主要存放编译输出的一些文件;Listing用于存放链接输出的文件。

建立好这些文件夹以后,我们开始建立工程。启动MDK软件,点击菜单“Project”菜单下的“New uVision Project”新建一个项目,保存到工程模板文件夹下,项目名称为“Project”,选择CPU为Atmel公司的SAM4N16C,如下图:

点击“OK”完成工程创建。接下来要对工程进行一些配置,首先要把需要的芯片相关的头文件和启动文件复制到刚刚建立的“CMSIS”文件夹中。到哪里去复制芯片相关头文件好启动文件呢?这是很多人比较疑惑的事情。其实有两个方法可以拿到这些文件,第一种方法是到Atmel提供的软件包里面去找;还有一种是到MDK的安装目录里面去找。这里我们选择后者。

打开MDK的安装目录,在“\ARM\INC\Atmel\SAM4N”下面就是需要的头文件,如下图:

在我们的工程中的CMSIS文件夹下建立一个“include”子文件夹,并将这些头文件复制到该文件夹下;接下来是启动文件,打开“\ARM\Startup\Atmel\SAM4N”,有两个文件,一个是启动汇编,一个是C文件,里面有SAM4N启动时配置的一些操作,如时钟配置等。将这两个文件复制到“CMSIS”文件夹下的Source文件夹。也许有人会问,为什么需要复制这些文件到工程中呢?这些是芯片必须的文件,其实不复制过来MDK也会自己去索引这些文件,但是这样做可以避免工程被拷贝到其他没有安装MDK或MDK版本低的地方还可以找到这些文件。

接下来要配置一下MDK工程的文件组,分别建立“Applications”、“CMSIS”和“Drivers”三个文件组,如下图:

同时给“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了。

[SAM4N学习笔记]SAM4N工程模板搭建的更多相关文章

  1. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  2. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  3. [SAM4N学习笔记]LED点灯程序

    一.准备工作:      将上一节搭建的工程模板复制一份,命名为"1.blink",这作为我们开发的第一个程序. 二.程序编写:      板子上只有一个可控制的LED,就是LED ...

  4. [SAM4N学习笔记]按键程序(中断方式)

    一.准备工作:      将上一节搭建的工程复制一份,命名为"6.key interrupt".这一节主要讲如何使用SAM4N的GPIO中断功能,实现按键的中断输入. 二.程序编写 ...

  5. [SAM4N学习笔记]按键程序(查询方式)

    一.准备工作:      将上一节搭建的工程复制一份,命名为"5.key scanf".这一节主要讲如何使用SAM4N的GPIO输入功能,实现按键的输入. 二.程序编写:      ...

  6. [SAM4N学习笔记]UART的使用

    一.准备工作:      将上一节搭建的工程复制一份,命名为"3.uart".这一节主要讲如何使用SAM4N的UART功能,实现串口的收发. 二.程序编写: 细心看数据手册的朋友也 ...

  7. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  8. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  9. Django学习笔记 开发环境搭建

    为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...

随机推荐

  1. 九度OJ 1085 求root(N, k) -- 二分求幂及快速幂取模

    题目地址:http://ac.jobdu.com/problem.php?pid=1085 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k). ...

  2. /etc/rc.local ; /etc/init.d ;/etc/profile;/etc/bashrc;~/.bash_profile;~/.bashrc;~/.bash_logout

    1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里. 把脚本程序写在/etc/rc.d/init.d/目录下也可以  在完成 run level 3 ...

  3. Python3 高级特性

    切片 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素. 如果第一个索引是0,还可以省略: >>> L =['Michael', ' ...

  4. J2EE中的HttpSession

    J2EE中的HttpSession总结: ①什么是session? session是服务器端技术,利用这个技术,服务器在运行时可以为每一个浏览器创建一个共享的session对象,由于 session为 ...

  5. 基于ActiveMQ的点对点收发消息

    ActiveMQ是apache的一个开源消息引擎.可以作为即通引擎或者消息中间件引擎. 准备 下载ActiveMQ http://activemq.apache.org/download.html 进 ...

  6. 【python】aassert 断言

    语法 : assert 3>4 结果Traceback (most recent call last): File "<pyshell#0>", line 1, ...

  7. 远程连接sql server 数据库的方法

    今天找了半天,终于解决了如何从本地连接到远程sql server服务器的方法. 1.首先确保打开远程服务器的sql server配置管理器,确保TCP/IP协议开启 2.WebConfig的连接字符格 ...

  8. ARM编译器4字节对齐

    (1)我们假设只有一个赋初值的char型全局变量,那么系统会在data区分配一个4字节的存储空间来存储它.实际上,只用了1个字节,但是为了4字节对齐,只好分配4个字节,所以就会有3个字节浪费. (2) ...

  9. C#中通过调用Dll函数时,执行一段时间后,就会报内存可能被破坏的错的解决办法

    遇到同样的问题,已经解决的:http://blog.csdn.net/youxiazzz12/article/details/24313347

  10. Python连接Redis连接配置

    1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...