楼主: FSL_TICS_ZP

[原创] 从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

  [复制链接]

该用户从未签到

0

主题

3

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
发表于 2013-7-13 20:42:03 | 显示全部楼层

RE:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

很有帮助!!!
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2013-7-16 11:56:56 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

good!!!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
3
最后登录
1970-1-1
发表于 2013-7-17 10:17:13 | 显示全部楼层

RE:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

买了还没用过
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

5

帖子

0

新手上路

Rank: 1

积分
3
最后登录
1970-1-1
发表于 2013-7-19 09:21:32 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

好东西,学习了,顶起来。。。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-7-22 09:37:13 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(中断使用方法介绍)

  中断使用方法
(一)预备知识
       中断是用以提高计算机工作效率﹑增强计算机功能的一项重要技术。当中断事件发生时,CPU中止当前程序的执行,保存现场,转向执行中断服务程序。中断服务程序执行完毕后回到现场,回到断点处继续执行。
          Kinetics的中断机制由嵌套向量中断控制器(NVIC)来管理,其主要的特点包括:
         1)可嵌套中断支持,这点就不用细说了,几乎大多数内核都支持中断嵌套,但可能嵌套的级数有些不同;
        2)向量中断支持,Cortex-M系列通过查询中断向量表找到相应的ISR(中断服务程序)入口,并跳转执行;
        3)动态优先级调整,即支持软件运行时改变中断优先级,飞思卡尔的HCS12也支持这个功能;
      4)中断延迟大大缩短,引入了一些新特性,例如咬尾中断,晚到中断;
      5)中断可屏蔽,支持条件性屏蔽即只屏蔽优先级低于某个阈值的中断,当然也可以屏蔽全部中断了;
         Cortex-M核的NVIC最多支持200多个中断(包括系统异常16个和外部中断240个),只不过各大半导体厂商根据自家芯片的资源做了定制。其中前16个中断为系统中断,使用者主要关心的是IRQ中断(即外部中断,含外设资源),本文主要介绍飞思卡尔的Kinetis系列MCU,其中断特点介绍如下
      1)低中断延迟,从中断发生到进入中断服务程序最多12时钟周期;
      2)最多120个中断,包含16个核中断和剩余的外部IRQ中断;
      3)最多16个可编程优先级;
      4)动态改变优先级;
      5)可重定位向量表,通过写SCB_VTOR寄存器。
 
         如果童鞋们想要对Kinetisc系列MCUNVIC加深理解的话,可通过以下链接https://www.nxpic.org.cn/bbs/article_1280_551272.html阅读《飞思卡尔Kinetis芯片中NVIC模块的中断寄存器的介绍及其应用举例》博文。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-7-22 09:45:19 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(中断使用方法介绍)

 (二)自己动手,丰衣足食
          上篇我已经给童鞋们介绍了如何利用LPTMR模块实现闪烁灯工程,这次我将讲解如何利用LPTMR中断来实现同样的功能。
          工程代码修改过程如下:
           i  添加组件: 由于本篇也是使用LPTMR模块,所以此步骤可参考上一篇。
          ii配置组件: 在添加完组件后,就需要对所选组件配置相应的参数。由于这次是要使用LPTMR模块中断,所以参数配置要在上一篇的基础上增加中断设置如图38所示,在Interrupts参数列中,选择Interrupt request的值为EnabledInterrupt priority的值为0(即优先级最高,当然童鞋们也可以根据自己的需要变更优先级),ISR name的值为Lptmr_isr(中断函数名称可以根据童鞋们的个人喜好设置哦),Timer interrupt的值为Enabled。
Untitled1.jpg

38  LPTMR中断配置

           iii  生成并编写代码: 在组件参数配置完成后,首先要生成已配置完成的组件代码,可在Components对话框中选中LPTMR组件,单击 Untitled2.jpg 便可生成代码(如上篇图36所示),但童鞋们一定要记住,PE生成的代码选择组件的模块功能参数和模块初始化等,所以要实现软件代码的具体功能还是需要我们自己去调用或者自己重新编写的。在本篇中,PE就不会生成相应的中断函数(Lptmr_isr),需要自己手动编写添加的。打开Processor Expert.c,在代码窗口中可以看到代码的内容,在其中做如下修改:

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-7-22 09:56:07 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(中断使用方法)

           while1)循环
          注释掉原while1)循环中所有的代码。
           Lptmr_isr中断函数相关编写
(包括Lptmr_isr()LPTMR_isr_inti()
           void Lptmr_isr()
         {
          static int i=0;
          LPTMR_isr_inti();
          switch(i)
                 {
                      case 0: Blue_LED_SetVal(Blue_LED_DeviceData);
                           Green_LED_ClrVal(Green_LED_DeviceData);
                           Red_LED_SetVal(Red_LED_DeviceData);i=1;break;
                      case 1: Blue_LED_SetVal(Blue_LED_DeviceData);
                           Green_LED_SetVal(Green_LED_DeviceData);
                           Red_LED_ClrVal(Red_LED_DeviceData);i=2;break;
                      case 2: Blue_LED_ClrVal(Blue_LED_DeviceData);
                           Green_LED_SetVal(Green_LED_DeviceData);
                           Red_LED_SetVal(Red_LED_DeviceData);i=0;break;
                      default: break;
                 }
          printf("\nInterrupt is successful!!\n");      
         }
          其中LPTMR_isr_inti()函数代码为:
     void LPTMR_isr_inti(void)
         {
          LPTMR0_CSR = (uint32_t)(LPTMR0_CSR &= ~LPTMR_CSR_TEN_MASK);
          LPTMR0_CMR = LPTMR_CMR_COMPARE(1000);
          LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;
          return;
         }
     代码修改完成后,别忘了重新编译工程
          代码编译成功后,就可连接FRDM-KL25Z开发板进行调试,可观察到板子上的RGB LED每隔1秒变换颜色,同时会发送Interrupt is successful!!PC机,可通过串口猎人工具观察到(如图39所示),并附上修改完成后的Text工程。
Capture1.JPG

39 串口猎人界面

 

   下一篇我打算向大伙演示如何应用PIT模块中断实现上述结果,童鞋们可以自己先尝试操作一下,碰到自己不熟悉的问题可以在论坛中提出,这样有利于大家相互交流和讨论,同时也利于童鞋们的快速入门哦,所以不要犹豫,赶快加入吧!!
Test.rar (2.14 MB, 下载次数: 283)
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

9

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-7-23 15:26:07 | 显示全部楼层

有没有关于如何使用库函数编程开发KL25的文档啊?

现在在用KL25做开发,以前用的都是NXP stm的 用库函数编程,用起来很方便,现在这个感觉没法下手开始啊。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-7-23 16:18:54 | 显示全部楼层

回复:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

 如果你用的KL25做开发的话,Freescale在官网有提供基于IAR或Keil的库函数的,比如从www.freescale.com/FRDM-KL25Z链接就可下载到KL25的例程代码,其中就有基于IAR或Keil的例程的,当然里面就会有相应的库函数的。
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

26

帖子

0

新手上路

Rank: 1

积分
66
最后登录
1970-1-1
发表于 2013-7-24 13:54:37 | 显示全部楼层

RE:从零开始玩转FRDM-KL25Z(28楼,37楼有演示视频)

不错的资料
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-3 10:53 , Processed in 0.132744 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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