在线时间143 小时
UID2039986
注册时间2013-9-8
NXP金币27
TA的每日心情 | 开心 2019-6-24 18:51 |
---|
签到天数: 6 天 连续签到: 1 天 [LV.2]偶尔看看I
版主
  
- 积分
- 2011
- 最后登录
- 2021-3-10
|
拿到FRDM-KL02Z开发板有段时间了. 不管各种studio ide ,心中永远觉得适合快速上手的就是ARM自家的通用ARM开发板环境,MDK for ARM, 各种版本,自寻咨询百度盘,qq群,微云等,终于一款适合您.
资料也无需东奔西走, 本论坛,就有完美的开发支持包下载:
如下:
https://www.nxpic.org.cn/document/detail/index/id-12822
于是上手就变得很简单,因为大家对mdk应该是0难度的,
解压缩,得到如下的几个文件夹:
1: schmatic, 放置的是开发板的原理图;
2: samplecode: 内置了10个例程,
3:refference: 参考手册, 内置了at24c02,等所用到的一些板载ic的数据手册 ;
4: tools: 这个比较重要,涉及到我们如何下载调试,因为出厂预置的调试器版本,仅仅虚拟了一个u盘,用于程序下载, 如果要实现在线调试
需要,tool内的jlink驱动安装,并且讲相应的固件,更新到板载的调试工具中去,详细方法见readme.txt
1.未插板前,先安装JLINK驱动Setup_JLink_V500e.zip
2.把FRDM-KL02板子的调试接口固件换为JLINK固件,步骤如下:
1)板子断电,按住reset按键的同时,连接板子和电脑,这时候电脑中会出现一个名为"BOOTLOADER"的磁盘,松开reset按键
2)解压JLink_OpenSDA.rar,把里面的JLink_OpenSDA.sda文件发送到“BOOTLOADER‘磁盘,并等待发送完成
3)FRDM-KL02板子断电,再重新上电,这时候板子的调试器变为JLINK,可以在我的电脑->设备管理器中查看到JLINK及其虚拟串口
安装好后,可以通过JLINK下载例程代码到FRDM-KL02板子
如此之后,就可以调试体验程序了. 我在用MDK 5.18版本打开本例程时, 先是 先是
正在加载packs... 然后就闪屏 退出了, 原因不明, 于是更换MKD4.74版本,可以正常打开.
于是基于此版本进行在线调试,例程的调试工具默认是选择的JLINK
总体的调试感受和流畅度非常不错,可以在线查看各个内部资源.美中不足的是,因为硬件的断点有限, 依赖于软件技术可以实现多个甚至是无限多个断点,业内已经有厂家这个功能, 厂家附送的廉价调试工具里就可以具备该功能,;经过测试, nxp的本开发板板载的调试器没有实现这个功能,做了测试,打了10多个断点,跳出以下提示:
显然, 强大的jlink是有这个能力,但是因为授权给本开发板调试器的license权限所致,无法实现多个断点.
不过常见的查看内部变量,周期性刷新变量,查看内部资源寄存器这样的主流功能都是具备的.
附录是: 按键的程序,程序功能有详细说明: 实现功能,写的是最ABC的按键扫描和执行, 输入与输出的.
实际用到项目, 按键扫描必定要做必要的修改, 至少有个定时器或者时间标记吧.各种状态机,按键的各种输入类型,长按,短按等,希望以后实际项目能够把KL02这种性价比极高的entry level的 低功耗系列芯片充分利用起来.
- /************************************************************************
- *例程功能:
- * 实现扩展板上按键控制LD的功能。
- * K4控制LD4,K3控制LD3,K2控制LD2,按键按下,相应小灯点亮,松开按键,相应小灯熄灭。K1与reset引脚相连,未做控制。
- * 串口以9600波特率打印:2-KEY demo!
- *注意K3和FRDM板上MMA8451Q INT2共用,若用扩展板K3按键,需要去掉FRDM板上R26电阻
- *************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include "gpio.h"
- #include "common.h"
- #include "uart.h"
- /* LED pin */
- #define LED0_PORT HW_GPIOB
- #define LED0_PIN 11
- #define LED1_PORT HW_GPIOB
- #define LED1_PIN 10
- #define LED2_PORT HW_GPIOB
- #define LED2_PIN 7
- #define LED3_PORT HW_GPIOB
- #define LED3_PIN 6
- /* KEY pin */
- #define KEY3_PORT HW_GPIOA
- #define KEY3_PIN 12
- #define KEY2_PORT HW_GPIOA // 注意此脚和FRDM板上MMA8451Q INT2共用,若用扩展板按键,需要去掉FRDM板上R26电阻
- #define KEY2_PIN 10
- #define KEY1_PORT HW_GPIOB //NMI
- #define KEY1_PIN 5
- #define KEY0_PORT HW_GPIOA//RESET
- #define KEY0_PIN 11
- int main(void)
- {
- /* 开机延时 */
- DelayInit();
- /* LED */
- GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP);
- /* KEY */
- // GPIO_QuickInit(KEY0_PORT, KEY0_PIN, kGPIO_Mode_IPU);// reset
- GPIO_QuickInit(KEY1_PORT, KEY1_PIN, kGPIO_Mode_IPU); //NMI
- GPIO_QuickInit(KEY2_PORT, KEY2_PIN, kGPIO_Mode_IPU); //kGPIO_Mode_IFT
- GPIO_QuickInit(KEY3_PORT, KEY3_PIN, kGPIO_Mode_IPU);
- /* UART 初始化 */
- UART_QuickInit(UART0_RX_B2_TX_B1, 9600);
- printf("2-KEY demo!\r\n");
-
- while(1)
- {
- if(GPIO_ReadBit(HW_GPIOA, 12)==0)
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 0);
- else
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
-
- if(GPIO_ReadBit(HW_GPIOA, 10)==0) // 注意此脚和FRDM板上MMA8451Q INT2共用,若用扩展板按键,需要去掉FRDM板上R26电阻
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 0);
- else
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
-
- if(GPIO_ReadBit(HW_GPIOB, 5)==0)
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 0);
- else
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
-
- }
- }
复制代码
|
|