路径为UWB\NCJ29D5\NCJ29D5_CAS_Examples_v1.4\onic\BlinkyLed\toolsupport\keil
例程怎么来的可以看看上一篇NXP UWB NCJ29D5开发(一)环境搭建

1、

//系统选择外部晶振,时钟频率为55.2Mhz
phscaAppHal_Init(PHSCA_APPHAL_XO_CLOCK_SOURCE_55P2Mhz);

在文档NCJ29D5_AppHAL.chm里可以看到,路径为:UWB\NCJ29D5\NCJ29D5 SDK v11.0\Documentation

2、

 /*--- Init baseband to enable the LDOs to power VDD_GLOB for LEDs ---*//** 55.2M+xoClkDivderSet:0+hwAcceleratorCfg:0(software encoder) -->rfpllRxTime:75  rfpllTxTime:180*/phIscaBaseband_Config_t gphscaRciAppConfig_Static ={.Control_b.xoClockSel = PHSCA_BB_XO_CLOCK_SOURCE_55P2Mhz, //55.2M.Control_b.xoClkDivderSet = 0u,.Control_b.hwAcceleratorCfg = 0u,};uint16_t rfpllRxTxTime[2] = {0u, 0u};/* Update rfpll tx and rx rampup time in RciConfiguration */phscaAppHal_GetRfpllRxTxRampupTime(gphscaRciAppConfig_Static.Control_b.hwAcceleratorCfg,gphscaRciAppConfig_Static.Control_b.xoClkDivderSet,&rfpllRxTxTime[0u], &rfpllRxTxTime[1u]);gphscaRciAppConfig_Static.Control_b.rfpllRxTime = rfpllRxTxTime[0u];gphscaRciAppConfig_Static.Control_b.rfpllTxTime = rfpllRxTxTime[1u];/* Init Baseband */phscaBaseband_Init(gphscaRciAppConfig_Static);

这个是baseband的初始化过程,参数的设置目的可以在文档NCJ29D5_Baseband.chm可以看到,路径为:UWB\NCJ29D5\NCJ29D5 SDK v11.0\Documentation

很显然,例程的配置是第一行,从而让rfpllRxTime=75 rfpllTxTime=180

3、

/* Turn on crystal *//**When set to 1, the crystal oscillator is selected as input of the output buffer driving the XTAL_OUT pin.*If set to 0, the XTAL_OUT configuration is not altered*/phscaAppHal_XoOn(false);/* Init UART */phscaLinFlex_UartInit(PHSCA_LINFLEX_UART_BAUD_115200);

这两个从字面意思就可以看出,禁能XTAL_OUT和LINFLEX_UART的波特率是115200

4、

/*--- Init P13 (CS2_N) as GPIO ---*/u_port->ALTF_b.CS2_N = 0u; //CS2_N as GPIOu_port->DIR_b.CS2_N = 1u; //0:input 1:outputu_port->PUD_b.CS2_N_PU = 1u; //0:disabel 1:enableu_port->PUD_b.CS2_N_PD = 0u; //0:disabel 1:enableu_port->OUT_b.CS2_N = 1u; //ouput value

CS2_N就是P13脚的一个复用功能之一,这样就把P13配置为普通GPIO,输出模式,初始输出高电平

相关配置在文档Ranger-4 user manual里,注释是简写

这里提一下开发需要的文档如下

5、

 /*--- Init timer GPT0 ---*/uint32_t periodInUs = 500000u;u_timers->TIMERS_TIMER0_PRESCALER_REG_b.TIMER0_PRESCALING_VALUE = 1u; //定时器时钟预分频系数u_timers->TIMERS_MODE_REG = 0u; //0:single shot 1:free runningu_timers->TIMERS_INT_SET_ENABLE_REG = 1u; //0:no effect 1:enable INTu_timers->TIMERS_MODE_REG = 1u;

这里很奇怪的一点是TIMERS_MODE_REG 配置了两次,把u_timers->TIMERS_MODE_REG = 0u;注释掉也不影响。
同样相关配置在文档Ranger-4 user manual里


6、

uint32_t halfPeriod = periodInUs / 2000u; //250uint8_t preScaler = 1u;uint32_t sysCoreClock = phscaAppHal_GetSystemCoreClock() / 1000u; //55200uint32_t timerRegCount = halfPeriod * (sysCoreClock / preScaler); //13800000, 55200000 / 13800000 = 4,即1秒可以记4次,记一次需要250MS,即250MS进一次中断u_timers->TIMERS_TIMER0_TIMEOUT_REG = timerRegCount; //计数值

如果想要500MS,简单做法可以在让timerRegCount * 2


7、
NVIC_EnableIRQ(IRQ19_Timer0_IRQn);
定时器中断向量在startup_NCJ29D5_user.s里面可以看到

8、

__attribute__ ((interrupt ("IRQ")))
void IRQ19_Timer0(void)
{u_port->OUT_b.CS2_N = !u_port->OUT_b.CS2_N;u_timers->TIMERS_INT_CLR_STATUS_REG = 1u; //0:no effect 1:clear timer0 timeout interrupt
}

到此这个例程结束。

没找到相关文档前,看这些代码还是有点懵的,有文档后就清晰了。

全部代码

/*(c) NXP B.V. 2020. All rights reserved.Disclaimer1. The NXP Software/Source Code is provided to Licensee "AS IS" without anywarranties of any kind. NXP makes no warranties to Licensee and shall notindemnify Licensee or hold it harmless for any reason related to the NXPSoftware/Source Code or otherwise be liable to the NXP customer. The NXPcustomer acknowledges and agrees that the NXP Software/Source Code isprovided AS-IS and accepts all risks of utilizing the NXP Software underthe conditions set forth according to this disclaimer.2. NXP EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING,BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF INTELLECTUAL PROPERTYRIGHTS. NXP SHALL HAVE NO LIABILITY TO THE NXP CUSTOMER, OR ITSSUBSIDIARIES, AFFILIATES, OR ANY OTHER THIRD PARTY FOR ANY DAMAGES,INCLUDING WITHOUT LIMITATION, DAMAGES RESULTING OR ALLEGED TO HAVERESULTED FROM ANY DEFECT, ERROR OR OMISSION IN THE NXP SOFTWARE/SOURCECODE, THIRD PARTY APPLICATION SOFTWARE AND/OR DOCUMENTATION, OR AS ARESULT OF ANY INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHT OF ANYTHIRD PARTY. IN NO EVENT SHALL NXP BE LIABLE FOR ANY INCIDENTAL,INDIRECT, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL DAMAGES(INCLUDING LOST PROFITS) SUFFERED BY NXP CUSTOMER OR ITS SUBSIDIARIES,AFFILIATES, OR ANY OTHER THIRD PARTY ARISING OUT OF OR RELATED TO THE NXPSOFTWARE/SOURCE CODE EVEN IF NXP HAS BEEN ADVISED OF THE POSSIBILITY OFSUCH DAMAGES.3. NXP reserves the right to make changes to the NXP Software/Sourcecode anytime, also without informing customer.4. Licensee agrees to indemnify and hold harmless NXP and its affiliatedcompanies from and against any claims, suits, losses, damages,liabilities, costs and expenses (including reasonable attorney's fees)resulting from Licensee's and/or Licensee customer's/licensee's use of theNXP Software/Source Code.
*//*** @file* @brief NCJ29D5 Blinky LED App*/
#include <stdbool.h>
#include <stdint.h>// Include NCJ29D5_user.h (rename SPI controller's "EOF" field to "SPI_EOF" to avoid
// clash with EOF macro from stdio.h)
#define EOF SPI_EOF
#include <NCJ29D5_user.h>
#undef EOF#include <stdio.h>
#include <phIscaBaseband.h>
#include <phIscaUtilities.h>
#include <phIscaAppHal.h>
#include <phscaTools.h>
#include <phscaLinFlex.h>int main(void)
{//系统选择外部晶振,时钟频率为55.2MhzphscaAppHal_Init(PHSCA_APPHAL_XO_CLOCK_SOURCE_55P2Mhz);/* Stop Watchdog timer for debugging purpose */phscaUtilities_WdtResetWithMS(0u);/*--- Init baseband to enable the LDOs to power VDD_GLOB for LEDs ---*//** 55.2M+xoClkDivderSet:0+hwAcceleratorCfg:0(software encoder) -->rfpllRxTime:75  rfpllTxTime:180*/phIscaBaseband_Config_t gphscaRciAppConfig_Static ={.Control_b.xoClockSel = PHSCA_BB_XO_CLOCK_SOURCE_55P2Mhz, //55.2M.Control_b.xoClkDivderSet = 0u,.Control_b.hwAcceleratorCfg = 0u,};uint16_t rfpllRxTxTime[2] = {0u, 0u};/* Update rfpll tx and rx rampup time in RciConfiguration */phscaAppHal_GetRfpllRxTxRampupTime(gphscaRciAppConfig_Static.Control_b.hwAcceleratorCfg,gphscaRciAppConfig_Static.Control_b.xoClkDivderSet,&rfpllRxTxTime[0u], &rfpllRxTxTime[1u]);gphscaRciAppConfig_Static.Control_b.rfpllRxTime = rfpllRxTxTime[0u];gphscaRciAppConfig_Static.Control_b.rfpllTxTime = rfpllRxTxTime[1u];/* Init Baseband */phscaBaseband_Init(gphscaRciAppConfig_Static);/* Turn on crystal *//**When set to 1, the crystal oscillator is selected as input of the output buffer driving the XTAL_OUT pin.*If set to 0, the XTAL_OUT configuration is not altered*/phscaAppHal_XoOn(false);/* Init UART */phscaLinFlex_UartInit(PHSCA_LINFLEX_UART_BAUD_115200);printf("\r\n--- Blinky LED ---\n\r");/*--- Init P13 (CS2_N) as GPIO ---*/u_port->ALTF_b.CS2_N = 0u; //CS2_N as GPIOu_port->DIR_b.CS2_N = 1u; //0:input 1:outputu_port->PUD_b.CS2_N_PU = 1u; //0:disabel 1:enableu_port->PUD_b.CS2_N_PD = 0u; //0:disabel 1:enableu_port->OUT_b.CS2_N = 1u; //ouput value/*--- Init timer GPT0 ---*/uint32_t periodInUs = 500000u;u_timers->TIMERS_TIMER0_PRESCALER_REG_b.TIMER0_PRESCALING_VALUE = 1u; //定时器时钟预分频系数//u_timers->TIMERS_MODE_REG = 0u; //0:single shot 1:free runningu_timers->TIMERS_INT_SET_ENABLE_REG = 1u; //0:no effect 1:enable INTu_timers->TIMERS_MODE_REG = 1u;uint32_t halfPeriod = periodInUs / 2000u; //250uint8_t preScaler = 1u;uint32_t sysCoreClock = phscaAppHal_GetSystemCoreClock() / 1000u; //55200uint32_t timerRegCount = halfPeriod * (sysCoreClock / preScaler); //13800000, 55200000 / 13800000 = 4,即1秒可以记4次,记一次需要250MS,即250MS进一次中断u_timers->TIMERS_TIMER0_TIMEOUT_REG = timerRegCount; //计数值printf("Timer Reg Counter = %i\n\r",timerRegCount);NVIC_EnableIRQ(IRQ19_Timer0_IRQn);while(1){}
}__attribute__ ((interrupt ("IRQ")))
void IRQ19_Timer0(void)
{u_port->OUT_b.CS2_N = !u_port->OUT_b.CS2_N;u_timers->TIMERS_INT_CLR_STATUS_REG = 1u; //0:no effect 1:clear timer0 timeout interrupt
}

NXP UWB NCJ29D5开发(二)BlinkyLed例程相关推荐

  1. NXP UWB NCJ29D5开发(一)环境搭建

    1.从NXP的共享账号下载资料 共享账号需要找对接的NXP人员拿到,他会把资料分享到这个账号,在这个账号里面可以下载 进入nxp官网,登录后点击my nxp,选择Software Licensing ...

  2. LabVIEW编程LabVIEW开发Andor CCD例程与相关资料

    LabVIEW编程LabVIEW开发Andor CCD例程与相关资料 Andor提供一系列深度制冷.背照式CCD相机,可满足各种视野要求,该CCD具备制冷功能,在这个行业算是比较专业的了.厂家提供自己 ...

  3. springboot flask php,使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发(二)

    使用Vue完成前后端分离开发(二) Bravery never goes out of fashion. 勇敢永远不过时. 前面简单说了一下 Vue 项目的搭建和项目的大致页面,这里讲一下 Djang ...

  4. 【Android游戏开发二十七】讲解游戏开发与项目下的hdpi 、mdpi与ldpi资源文件夹以及游戏高清版本的设置...

    今天一个开发者问到我为什么游戏开发要删除项目下的hdpi.mdpi和ldpi文件夹:下面详细给大家解答一下: 首先童鞋们如果看过我写的<[Android游戏开发二十一]Android os设备谎 ...

  5. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  6. SQL2K数据库开发二十三之索引操作重建索引

    1.可以使用下面的语句创建索引,重建索引应使用DROP_EXISTING选项. 2.在SQL Server查询分析器中输入如下的SQL语句,点击工具栏上的执行查询图标. 3.查询语句执行完毕后,结果窗 ...

  7. 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约

    以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约 在上一篇文章中,我们使用Truffle自带的客户端Truffle Develop,在私有链上搭建并运行了官方提供的WebPack智能合 ...

  8. Java 快速开发二维码生成服务

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...

  9. proc除了能用于oracle开发_能不能用于mysql开发_Oracle数据库开发(二).Linux下配置使用ProC...

    一.提要 上文简单介绍了Windows下ProC配置开发,这次我们使用Linux平台再次配置Oracle ProC开 发环境(RedHat Linux 9 + Oracle 92). <ORAC ...

最新文章

  1. 初探mysql innodb集群_MySQL InnoDB Cluster搭建
  2. 安卓三维展示源码_谷歌也翻车了?全球数亿安卓设备难逃一“劫”,用户隐私数据库被利用长达10年!...
  3. SpringBoot------集成PageHelper分页功能
  4. Java如何调用webservice
  5. java计算base64图片大小
  6. MySQL 复制表结构、数据
  7. 2019年人工智能产业发展调研报告
  8. 【算法】五大常用算法最全面总结
  9. c语言浮点数乘法算法,单精度浮点数乘法的实现
  10. 斯坦福视觉课程CS131简介
  11. Redhat8的yum仓库配置及DNF的解释
  12. Android开源—RXJava观察者设计模式
  13. Java中单点登录的实现——类似QQ“顶号”操作
  14. Android多线程开发详解
  15. 深度学习概述-神经网络与深度学习学习笔记(一)
  16. 修改哪个请求头可以伪造请求ip_欧姆龙NX系列EtherNet/IP通信
  17. appid 登录不上appstore
  18. ftp同步工具,十款超高人气ftp同步工具测评
  19. Spartan6系列之Spartan6系列之芯片时钟资源深入详解
  20. signaltap采集数据到matlab,一种matlab调用signaltap采集数据的方法

热门文章

  1. 上海交大计算机学院奖学金,上海交通大学-电子信息与电气工程学院-学生工作办公室...
  2. 通达信版弘历软件指标_中线公式指标(副图 通达信 贴图)明确文字提示,辅助判断中线走势下载_通达信公式...
  3. 【JSON系列】JSON核心知识点总结
  4. javaScript学习笔记总结(一)
  5. java获取默认用户目录_Java获取当前路径
  6. java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
  7. 小程序确定取消弹窗_小程序开发之弹出框
  8. centos-7.2 node.js免编译安装
  9. 点击图片放大至原始图片大小
  10. JQuery让input从disabled变成enabled