查看: 4604|回复: 13

[原创] [原创] 【FRDM_KL02Z】测试笔记+基于mdk 4.74版本的KL02 按键程...

[复制链接]
  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
    发表于 2016-3-7 15:23:49 | 显示全部楼层 |阅读模式

         拿到FRDM-KL02Z开发板有段时间了. 不管各种studio ide ,心中永远觉得适合快速上手的就是ARM自家的通用ARM开发板环境,MDK for ARM, 各种版本,自寻咨询百度盘,qq群,微云等,终于一款适合您.
    资料也无需东奔西走, 本论坛,就有完美的开发支持包下载:
    如下:
    https://www.nxpic.org.cn/document/detail/index/id-12822
    5P5LL]4]7~AD5K08{S05IT2.png



        于是上手就变得很简单,因为大家对mdk应该是0难度的,
    解压缩,得到如下的几个文件夹:
    LOA(E00W{4ZT~IHU8YNSY~2.png

            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
    6O{@VIM6%DY(AJ5TT0~31T0.png




         总体的调试感受和流畅度非常不错,可以在线查看各个内部资源.美中不足的是,因为硬件的断点有限, 依赖于软件技术可以实现多个甚至是无限多个断点,业内已经有厂家这个功能, 厂家附送的廉价调试工具里就可以具备该功能,;经过测试, nxp的本开发板板载的调试器没有实现这个功能,做了测试,打了10多个断点,跳出以下提示:


    PRWPLN}O2YT}K]Q@XTNBIAJ.png





         显然, 强大的jlink是有这个能力,但是因为授权给本开发板调试器的license权限所致,无法实现多个断点.
         不过常见的查看内部变量,周期性刷新变量,查看内部资源寄存器这样的主流功能都是具备的.
        附录是: 按键的程序,程序功能有详细说明: 实现功能,写的是最ABC的按键扫描和执行, 输入与输出的.
        实际用到项目, 按键扫描必定要做必要的修改, 至少有个定时器或者时间标记吧.各种状态机,按键的各种输入类型,长按,短按等,希望以后实际项目能够把KL02这种性价比极高的entry level的 低功耗系列芯片充分利用起来.


    1. /************************************************************************
    2. *例程功能:
    3. *   实现扩展板上按键控制LD的功能。
    4. * K4控制LD4,K3控制LD3,K2控制LD2,按键按下,相应小灯点亮,松开按键,相应小灯熄灭。K1与reset引脚相连,未做控制。
    5. * 串口以9600波特率打印:2-KEY demo!
    6. *注意K3和FRDM板上MMA8451Q INT2共用,若用扩展板K3按键,需要去掉FRDM板上R26电阻
    7. *************************************************************************/
    8. #include <stdio.h>
    9. #include <string.h>

    10. #include "gpio.h"
    11. #include "common.h"
    12. #include "uart.h"

    13. /* LED pin */
    14. #define LED0_PORT   HW_GPIOB
    15. #define LED0_PIN    11
    16. #define LED1_PORT   HW_GPIOB
    17. #define LED1_PIN    10
    18. #define LED2_PORT   HW_GPIOB
    19. #define LED2_PIN    7
    20. #define LED3_PORT   HW_GPIOB
    21. #define LED3_PIN    6

    22. /* KEY pin */
    23. #define KEY3_PORT   HW_GPIOA
    24. #define KEY3_PIN    12
    25. #define KEY2_PORT   HW_GPIOA // 注意此脚和FRDM板上MMA8451Q INT2共用,若用扩展板按键,需要去掉FRDM板上R26电阻
    26. #define KEY2_PIN    10
    27. #define KEY1_PORT   HW_GPIOB  //NMI
    28. #define KEY1_PIN    5
    29. #define KEY0_PORT   HW_GPIOA//RESET
    30. #define KEY0_PIN    11

    31. int main(void)
    32. {

    33.     /* 开机延时 */
    34.     DelayInit();
    35.     /* LED */
    36.     GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP);
    37.     GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP);
    38.     GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP);
    39.     GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP);
    40.     /* KEY */
    41.   // GPIO_QuickInit(KEY0_PORT, KEY0_PIN, kGPIO_Mode_IPU);// reset
    42.     GPIO_QuickInit(KEY1_PORT, KEY1_PIN, kGPIO_Mode_IPU);  //NMI
    43.     GPIO_QuickInit(KEY2_PORT, KEY2_PIN, kGPIO_Mode_IPU); //kGPIO_Mode_IFT
    44.     GPIO_QuickInit(KEY3_PORT, KEY3_PIN, kGPIO_Mode_IPU);
    45.     /* UART 初始化 */
    46.     UART_QuickInit(UART0_RX_B2_TX_B1, 9600);
    47.     printf("2-KEY demo!\r\n");
    48.   
    49.     while(1)
    50.     {
    51.         if(GPIO_ReadBit(HW_GPIOA, 12)==0)
    52.               GPIO_WriteBit(LED0_PORT, LED0_PIN, 0);
    53.         else
    54.               GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
    55.         
    56.         if(GPIO_ReadBit(HW_GPIOA, 10)==0)  // 注意此脚和FRDM板上MMA8451Q INT2共用,若用扩展板按键,需要去掉FRDM板上R26电阻
    57.               GPIO_WriteBit(LED1_PORT, LED1_PIN, 0);
    58.         else
    59.               GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
    60.         
    61.         if(GPIO_ReadBit(HW_GPIOB, 5)==0)
    62.               GPIO_WriteBit(LED2_PORT, LED2_PIN, 0);
    63.         else
    64.               GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
    65.         
    66.     }
    67. }


    复制代码




    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-3-7 23:23:38 | 显示全部楼层
    说的非常详细,收藏学习。
    该会员没有填写今日想说内容.
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16871
    最后登录
    1970-1-1
    发表于 2016-3-7 15:36:46 | 显示全部楼层
    很详细哈,多谢分享
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    22
    最后登录
    2018-3-1
    发表于 2016-3-7 15:27:25 | 显示全部楼层
    屌屌哒的说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
     楼主| 发表于 2016-3-7 15:35:29 | 显示全部楼层
    谢谢老大们帮顶 , 想了一下, 断点的问题,应该是可以给jlink导入license的方法来解决.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2016-3-7 15:37:09 | 显示全部楼层
    KL02硬件只支持2个断点,所以不可以多加断点!
    这点在KL02的RM的Table 3-5. ARM Cortex-M0+ parameter settings中已经讲了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2016-3-7 15:40:20 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2016-3-7 15:37
    KL02硬件只支持2个断点,所以不可以多加断点!
    这点在KL02的RM的Table 3-5. ARM Cortex-M0+ parameter sett ...

    怎样提取RM中重点部分?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2016-3-7 15:41:02 | 显示全部楼层
    花溪村长 发表于 2016-3-7 15:40
    怎样提取RM中重点部分?

    你是说拷贝吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
     楼主| 发表于 2016-3-7 15:49:44 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2016-3-7 15:37
    KL02硬件只支持2个断点,所以不可以多加断点!
    这点在KL02的RM的Table 3-5. ARM Cortex-M0+ parameter sett ...

    很多调试器可以通过软件的方法,增加断点的, Jlink也可以,板载的版本因为license限制的问题,所有不支持多断点,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13271
    最后登录
    2019-1-27
    发表于 2016-3-7 16:28:37 | 显示全部楼层
    版主出品  必属精品
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
     楼主| 发表于 2016-3-7 18:39:29 | 显示全部楼层
    从一个初学者的角度, 体验人生,评测开发板.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-11 13:13 , Processed in 0.112652 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表