NXP JN5169使用代码模板新建外设工程
一、下载工程模板
BeyondStudio for NXP不提供直接新建JN516x工程的功能,需要在官网下载工程模板。
现在我们要新建的是仅实现外设功能的工程,不需要ZigBee 3.0协议栈那么的复杂功能,所以这里我们下载的是基于IEEE 802.15.4协议的工程模板。
这里我们下载的是JN-AN-1174工程模板,选择JN-AN-1174是因为该工程模板简单,方便修改。
下载地址:IEEE 802.15.4应用笔记
二、导入工程
① 解压JN-AN-1174-JN516x-802-15-4-Application-Template到BeyondStudio的默认工作空间C:\NXP\bstudio_nxp\workspace
② 打开BeyondStudio for NXP,点击菜单栏的File > Import
③ 选择General下的Existing Projects into Workspace,然后点击Next
④ 选择Select root directory,点击Browse…
⑤ 选择工作空间中之前解压出来的文件夹,点击确定
⑥ 勾选工程,点击Finish
⑦ 工程已成功导入到BeyondStudio for NXP中了。
三、修改工程模板
① 右键单击工程,选择Copy
② 再次单击右键,选择Paste
③ 给复制的工程重新命名,例如:JN516x-DIOs-Demo,单击OK
可以看到,复制过来的工程除了工程名不一样之外,其他都是一样的
④ 修改文件
1)、删除AN1174_154_EndD文件夹
2)、删除Doc文件下的JN-AN-1174-IEEE802.15.4-App-Template.pdf文件,这个文件夹存放的是说明文档
3)、展开AN1174_154_Coord文件下的Source文件夹,删除AN1174_154_Coord.c,Source文件夹存放的是c源程序。
4)、AN1174_154_Coord重命名为DIOs_Demo
5)、展开Common文件夹下的Source文件夹,修改config.h,该文件用来存放定义,如下图:
6)、这样就建好了一个空白的工程模板,如下图
四、根据工程模板新建一个DIO工程
① 展开DIOs_Demo文件下的Source文件夹,右键单击Source文件夹,新建Main.c文件
在Main.c中键入代码:
#include <AppHardwareApi.h>
#include <AppQueueApi.h>
#include "config.h"
/*函数声明*/
PRIVATE void vLedsInit(void);
PRIVATE void vBtnsInit(void);
PRIVATE void vCbSysCtrl(uint32 u32Device, uint32 u32ItemBitmap);
PUBLIC void AppColdStart (void)
{
vAHI_WatchdogStop();
(void)u32AHI_Init();
vLedsInit();
vBtnsInit();
while (1) {
vAHI_CpuDoze(); /* Doze */
}
}
PUBLIC void AppWarmStart (void)
{
AppColdStart();
}
/*代码示例*/
PRIVATE void vLedsInit (void)
{
vAHI_DioSetDirection(0, LED_DIO);
vAHI_DioSetPullup(LED_DIO, 0);
}
PRIVATE void vBtnsInit (void)
{
vAHI_DioSetDirection(BTN_DIO, 0);
vAHI_DioSetPullup(BTN_DIO, 0);
vAHI_DioInterruptEdge(0, BTN_DIO); /* 下降沿触发 */
vAHI_DioInterruptEnable(BTN_DIO, 0);
vAHI_SysCtrlRegisterCallback(vCbSysCtrl);
}
PRIVATE void vCbSysCtrl (uint32 u32Device, uint32 u32ItemBitmap)
{
PRIVATE bool_t bLedState = FALSE;
bLedState = !bLedState;
bLedState ? LED_ON(LED_DIO) : LED_OFF(LED_DIO);
}
② 展开Common文件下的Source文件夹,打开config.h文件,输入以下代码,DIO定义:
#define BTN_DIO ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | \
(1 << 4) | (1 << 5) | (1 << 8) | (1 << 9) | \
(1 << 10) | (1 << 11))
#define LED2 (1 << 7)
#define LED3 (1 << 6)
#define LED4 (1 << 12)
#define LED5 (1 << 13)
#define LED6 (1 << 16)
#define LED8 (1 << 17)
#define LED_DIO (LED2 | LED3 | LED4 | LED5 | LED6 | LED8)
#define LED_ON(Led) vAHI_DioSetOutput(0, Led)
#define LED_OFF(Led) vAHI_DioSetOutput(Led, 0)
③ 修改后的工程如下:
④ 展开DIOs_Demo文件下的Build文件夹,修改该文件夹下的Makefile文件:
1)TARGET名称要和c源文件所在的文件名称一致
2)芯片名称为JN5169
3)SDK看你安装了哪个SDK,安装4170就写4170,安装4168就写4168
路径定义,这个不用改:
上图的路径定义已定义APP_SRC_DIR,添加要参与编译的c文件,APPSRC += AppQueueApi.c 该行不可删除,有多个c文件就添加多行,例如:
APPSRC += a.c
APPSRC += b.c
APPSRC += c.c
⑤ 修改Properties,选择工程,选择菜单栏的Project > Properties
选择C/C++ Build,更改Build Location下的Build directory,单击workspace,这个是选择Makefile文件所在的文件夹
选择DIOs_Demo文件下的Build文件夹,点击OK
勾选Use default build command
设置编译工具,展开C/C++ Build,选择Tool Chain Editer,Current toolchain必须选择BA ELF GNU toolchain,点击OK
⑥ 构建工程,右键单击工程,选择Clean Project,先Clean再Build
控制台输出:
刷新工程:
⑦ 至此,一个关于DIO外设工程已经建好,并构建成功
如何下载工程到JN5169设备:NXP JN5169下载器原理图(带按键)
可以保存该工程模板,然后可以用于构建其他外设工程,例如ADC、UART、SPI、I2C等等外设。