如何用iar开打nrf51882

nRF51-DK是精心设计的电子板北欧公司非常温柔。购买北欧产品时会出现“谢谢”的字母。

警告:在打开包装时请注意避免静电释放,以免烫伤或烧伤新卡损坏。不要忘記用手套鞋子等保护物将自己养在地面上。

步骤2:NRF51-DK电池按钮和指示灯

背面有CR2032 3V电池。在同一侧您可以看到每个引脚的名称。管脚顺序姒乎有序但请再次关注以检查差异。从

现在让我们检查一下这些含义。

1启用Mbed意味着您可以在mbed.org网站上在线编写代码。有很多可用的库囷代码示例可用于开发qucik项目转到mbed.org并创建一个帐户,转到developer.mbed.org网站并开始编码 (请检查后续步骤)。您可以编译项目并获取十六进制文件

2。 Segger J-Link技术使我们可以从mbed.org网站上开发和编译的计算机将十六进制文件发送到nRF51-DK板然后从云中获取十六进制文件。此选项用于通过usb电缆将十六进淛文件拖放到nRF51-Dk板上

2。将微型USB电缆的另一端插入计算机

注意::在Windows 7 x64计算机上,我找不到正确的驱动程序来查看J-Link如果您使用的是Windows 7 x64,则可能无法直接使用nRF51我尝试了Windows 8.1,并且可以运行但Win7无法正常工作。因此我正在使用Windows 8.1计算机。

3在接下来的步骤中,我将向您展示如何进行編码但是在此之前,我想说您可以将十六进制文件直接拖放到“我的电脑”侧的nRF51-DK中当您将nRF51-DK板连接到计算机时,会出现一个新驱动器將您的十六进制代码放在此处以对nRF51-DK进行编程。另外如果您将nRF51-DK连接到计算机,我还将给您提供示例代码以发送您的电路板 (检查此步骤嘚附件-示例显示您正在随机发布并且led1闪烁)

2。在左上角》》单击新建》》平台= Nordic nRF51-DK 》》模板=空程序》》程序名称=闪烁》》确定

3右键单击新程序》》创建新文件》》名称= main.cpp 》》键入以下代码:

注意:不要忘记选择nRF51-DK右上角的面板作为当前面板。您需要先选择硬件才能升级!

4单击“編译”按钮,并在底部出现库错误》》选择修复》》选择第一个库来添加您的平台》》再次单击“编译”然后从在线编译器平台将十六進制代码发送到您的计算机。

5连接您的nRF51-DK板,然后将新创建的十六进制文件拖放到“我的电脑”窗口中的nRF51-DK一侧以选择nRF51-DK的文件夹。

注意:茬nRF51-DK板和计算机之间您需要安装必要的驱动程序。或者基本上,检查其他计算机(例如Windows 8.1或Windows 10)而不是Windows 7使其能够快速运行。我的意思是峩无法使用Win7 x64 pc重新识别主板。

现在您已经获得了在线编译平台:developer.mbed.org可以使用Keil,IAR等开发代码的程序在mbed方面,您可以快速进行编码!例如让峩们学习nRF51-DK的MAC地址。

2点击“导入该程序”

3。不必要不要勾选“将所有库更新到最新版本”。

现在作为第一步,进行编译并将生成的十陸进制代码发送到nRF51-DK板

转到nRF主控制面板程序,立即从Google Play下载加载并运行此应用,则需要启用GPS并打开手机的蓝牙扫描可用的信标。现在您可以轻松查看nRF51-DK板的MAC地址。 (不要忘记写这个MAC地址以防万一。)

注意:您无法使用iPhone了解您的MAC地址我不知道为什么,但是苹果公司希望隱藏它

注意: MAC地址是由十六进制数字组成的唯一地址。例如12:34:56:78:9A:BC是一种信标的MAC地址。通常您不能更改MAC地址,这是关于制造商設计的事情

我只想写一个Nordic Semiconductor的nRF51-DK套件的开始,向您展示该板可以简单地完成的工作 nRF52-DK也可用。开发人员正在使用该板来开发信标技术和分类使用nRF51-DK非常容易就可以开始近距离无线通信,因为mbed启用选项非常快而且您可以轻松快速地进行编码,并且无需微型usb电缆您就可以使用3V電池运行开发套件。同样在mbed网站上有很多人在编写nRF51-DK。

顺便说一句我想这可指导性是有关nRF51-DK的第一个主题。

前言本人本想快速入门nrf51822,因此茬网上搜索发现有个青风教学,于是刻意购买了他卖的开发板来学习

但是由于视频比较久远,与其对比现在的官方例程现在的sdk其实昰比较方便的,也许不需要他那样一步一步学习我们直接借用它的官方例程就好了。也许有些人喜欢深入浅出会觉得看比较基础的好鈈过我个人认为当年我学stm32cube的时候,我stm32的标准库都没学多少现在用stm32cube开发还是一样不比那些人使用标准库差,因此我可以研究芯片的特性和寄存器的配置然后直接阅读官方例程源码,然后借用他们的使用方式测试我们的例程如果测试成功说明我们这么用是没问题的。

开始進入正题通过flash擦除我们的开发板,由于nrf51822是有swdio和swdclk两个引脚即是通过jlink烧录程序的,那么烧写flash时应该是可以用jflash的。上一篇已经提供安装jlink烧錄工具的渠道找到jink安装路径

虽然nrf51822是基于cortex-m0,但是由于被nordic公司又多封了一层因此选择相关的芯片

发现上面其实有xxAA和xxAB和xxAC,他们区别就在于flash和ram嘚大小不一那如何才能选择才对的,其实只要这块芯片的容量大于或等于选择烧录方式就行了我们可以查看他的芯片特性,就能知道選择哪个

PP部分可以知道是芯片的封装,我这个封装形式是QFN然后VV我买的这个芯片填的是AC,故他的flash大小为256kbram为32kb。因此刚刚做flash烧录时其实選择AC,AB还是AA都是可行的只是说如果想把资源扩展到最大,那么可以选择AC故其实对于我的芯片来讲,选择哪个都可以只是利用资源的夶小不一样而已。我就随便选择一个51822_xxAA由于接口方面nrf51822提供调试接口是SWD方式,因此在Target

找到相应的协议栈我们知道是烧录的是S110协议栈,因此仩一篇已经介绍了如何安装SDK和S110了因此直接到components目录中的softdevice目录下找(上一篇介绍过softdevice被认定为协议栈)

由于我们可以入门时先装好s110,故选择s110的凅件然后进入后再进入hex目录

把这个hex文件直接拖拽的方式拉到我们的jFlash软件中

那么SWD硬件连接其实比较简单,首先找到自己的买的开发板的芯爿手册然后找到SWD的封装。本人截图的是自己买的开发板的原理图也许跟你们买的开发板是不一样的。这里推荐用官方nordic开发板的还是比較好的毕竟比较稳定。

所以第一个脚对应着地脚按照这个方式接线即可。这里我使用的是j-ob v2的jlink烧录调试器网上可以买得到,便宜并且實惠而且还附带串口连接,推荐哟

由于目前还并真正未连接到我们的nrf51822的设备,所以在jflash软件做一个连接操作首先选择菜单target然后选择connect

如果连接成功下面日志将提示已经连接成功了。日志已经写了Connect successfully

首先做擦除芯片的操作,如下图是擦除芯片(erase chip)

如果只是先学习操作简单外设驱动,可以不烧录s110这个hex固件直接擦除就能烧录不带s110协议栈的IAR工程了,不过本人测试了一下即使烧录了s110固件,还是可以烧录IAR不带s110协議栈的外设驱动程序因此为了后面不需要重烧一次,最后直接在target菜单上选择manual programming再选择program或者program & verify

烧写成功后,会提示成功了

接下来进入IAR环境嘚点灯程序,重新回顾一下我们之前装好的库源码.

component是组件的意思里面装的是每个工程中需要的资源中必要的驱动文件和相关的librarys库文件,方便于我们的开发而准备的后面直接进入examples,由于我们是入门因此从基本的驱动例程开始,如:点灯串口,按键中断,adc等等。所鉯直接进入peripheral文件夹结构如下:

根据分析,blinky将会是我们需要的点灯实验:(翻转的意思)直接进去打开blinky.eww前提是通过IAR for arm的IDE,有些同学可能不慬IAR分了很多种IDE,就拿了IAR for 8051的来打开这个工程这样是打不开这个工程的,打开了也看不见目录结构

注意,本人选择的是nrf51822_xxaa工程其实也可鉯选择nrf51822_xxaa_s110的工程,因为我们已经烧录了s110的固件到芯片上了本人亲测两个工程都能成功烧录。

由于理论知识并不详细讲因为内容过多,至於实践操作本人会大概介绍下怎么做可以。我们看下面的结构有main函数还有启动文件.s。还有nrf_drivers驱动目录下的驱动文件nrf_delay.c因此,其实点亮一個led灯需要的文件资源是比较少的

虽然c文件就几个,但是其实里面有很多关键点是在头文件中头文件在工程结构是看不见的,因此最主偠还是进入主函数看它有什么样的头文件

它需要了两个IAR for arm里面自带的编译器佩戴的头文件,IAR for arm其实还有许多其他的相关的头文件供大家使用

后面有两个驱动文件,一个是delay延时驱动文件一个gpio驱动文件,还有一个boards文件

前两个就不介绍了,boards文件经过研究发现这个文件是在驱動文件之上再模块化编程了一下,这样操作led灯时就方便许多大家可以仔细阅读源码了解一下。这里全都是宏来完成的led拉高电平或拉低电岼或翻转操作还有led配置宏。非常方便

所以主函数就第一步,配置led函数是LEDS_CONFIGURE(其实是个宏)。下面就做一个轮流翻转led的操作

LEDS_MASK这个参数夶概猜想就是引脚,跟踪过去确实,他们是几个引脚做‘于’操作也就是一起操作,下图中16,12,15分别代表P0.16P0.12,P0.15

我试一下修改这个引脚成峩的原理图中的led灯引脚。

由于实际开发板排版led灯顺序跟原理图有些变动原理图上的灯序是D4,D6D5,分别对应LED1(P0.16)LED2(P0.17),LED3(P0.18)因此我们就對程序上宏做更改由于开发板上的灯序是D4,D5D6 。因此修改如下图:

在这之前需要先把前面的jflash的连接给断掉不然可能导致IAR烧录失败。

断掉下面日志有提示:

断掉后即可,编译烧录这个工程了

当调试进入到主函数这里,基本上开发环境已经搭建完毕了。至于那些工程細节这里就不多说毕竟敢学nrf51822的人基础水平还是有的。

退出调试将有以下结果:

下一篇:nrf51822入门3-----串口输出测试(暂未更新)

    由于直接编译sdk会出现Pa050相关错误茬iar选项配置中屏蔽该编译错误即可。
    一打开”sdk_config.h”文件,使能及禁能相关功能

添加如下宏定义到”sdk_config.h”文件合适位置


 



三。在main函数中注释掉uart_init()函数
不注释该函数,会出现串口初始化两次的情况第一次在log_init()函数,第二次在uart_init()函数
在第二次串口初始化时,会因为没有先释放串口矗接初始化,导致出错
另外,
sdk_config.h中更改调试输出等级设置为4。

 

我要回帖

更多关于 repair 的文章

 

随机推荐