楼主: FSL_TICS_ZP

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

  [复制链接]

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-8-8 10:11:31 | 显示全部楼层

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

回复第 80 楼 于2013-08-07 15:21:59发表:
不好意思,我看了这些文档,还是没得出怎么算出来的,我根据公式算出来就是不对啊,希望能给个计算的例子,最好串口0,一个例子,串口1一个例子,例程上的串口0,  UART0_BDH = 0x00;
UART0_BDL = 0x1a;//波特率9600这么设置为9600的波特率,可我怎么也算不出BDL=0x1a啊,希望给帮忙解答下,谢谢了。
我以K60的手册中给出的UART波特率图表(如图所示)给你举例吧。
Capture5.JPG

红线标注地方你可以不用看,因为这是K60的UART模块波特率微调配置位段,这在KL25中是没有的,我以配置波特率9600为例吧,由于UART时钟频率为10.2MHz,选择SBR=66,即UARTn_BDH的4~0位取0,UARTn_BDL=0x42。根据公式 
Baud Rate=UART module clock / (16 × SBR[12:0],可得10.2x1000000/(16x66)=9659.09,约等于9600,偏差为0.62%。
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

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

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

  PIT使用浅谈
     (一)预备知识
         PIT是周期中断定时器(Periodic Interrupt Timer)的简称,由多个可以产生中断并能出发DMA通道的定时器组成。PIT定时器模块基本工作原理:开始工作时,首先从加载寄存器(PIT_LDVALn)中将初始值加载到PIT计数器(PIT_CVALn),当PIT计数器的值由初始值减少到0时,PIT的中断标志位TIF会置位。如果中断使能位TIE置位,则MCU响应PIT中断。如果想要改变计数初值并取消当前的定时周期、以新的定时值开始一个定时器周期,则必须首先停止PIT定时器。完成一个周期的计数后,PIT计数器会再次加载各自的起始值,进而循环下去。(叙述方式很官方啊,强烈建议大家去阅读英文版的参考手册,童鞋们不用担心自己的英文水平不够而看不懂,这玩意看着看着就习惯啊,相信我,坚持一段时间后,你就会发现自己阅读英文手册变得游刃有余,好的,闲话不说啊,咱们马上开始吧)。
    (二)PIT工程建立介绍
       i 添加组件:在开发环境界面的Components Library对话框选择Alphabetical选项卡,找到名为Inti_PIT的组件双击(如图40所示),即可将Inti_PIT组件添加到工程中,同时在Components对话框中也会出现Init_PIT组件。
Capture1.JPG

40 添加PIT组件


回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-8-8 13:52:56 | 显示全部楼层

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

           ii  配置组件:在添加完组件后,在Components对话框中单击PIT组件,会在开发环境的Component Inspector窗口打开其配置界面 ,在配置界面的Clock gate中,选择Enabled,至于Clock settings则不需要配置,PE已帮我们选择好啊,这时,童鞋们可以对比前面介绍过的LPTMR组件,会发现LPTMR组件在Clock settings选项中,有四个时钟源供我们选择,为什么两种Timer配置会有差异呢?建议大家可以自己查看先KL25Z的参考手册找找原因(算是卖个关子吧)。在本例程中只需用到一个PIT定时器,所以在Channels中,只针对Channel 0进行配置,参数配置如下:在Timer 0中,选择Enabled,由于希望每隔0.5s产生一个中断,所以KL25Timer 0 load value配置成1.2x107,同时要将Interrupt requestTimer Interrupt都设置成Enabled,中断函数名ISR Name设为 PIT_isr,设置完成后会发现PIT组件配置界面还是会有错误提示(如图41所示)。这是怎么回事呢?根据错误提示Properties initializing  the same (bits) must be set identically(如图42所示)” 会发现问题出现在NVIC模块寄存器设置上(这个模块前面没有介绍过,而且参考手册对它的介绍也比较简单,但是童鞋们不用担心,我推荐童鞋们可以通过以下链接https://www.nxpic.org.cn/bbs/article_1280_551272.html,阅读论坛中一篇由飞思卡尔FAE发的专门介绍NVIC模块寄存器配置的帖子,要回帖感谢哦,哈哈),在KL25中,PIT0PIT1的中断向量是一样的,这就要求在配置PIT中断应用时,需要将Channel 0Channel 1Interrupt request都设置为Enabled,这样组件配置就Ok啊。
Capture2.JPG

41 配置LPTMR组件


Capture3.JPG

42 错误提示

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

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

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

        iii 生成并编写代码        
      在组件参数配置完成后,首先要生成已配置完成的组件代码,可在Components对话框中选中PIT组件,单击 Untitled1.jpg 便可生成代码(可参考图36),接下来介绍如何在helloworld工程的基础上修改程序代码。
     ① ProcessorExpert.c添加PIT_isr函数。
         PIT中断函数— void PIT_isrvoid
    void PIT0_isr(void)
       {
        unsigned int i;
        PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
        if(i==0x01)
        {
         Blue_LED_SetVal(Blue_LED_DeviceData);
         Green_LED_SetVal(Green_LED_DeviceData);
         Red_LED_ClrVal(Red_LED_DeviceData);
         printf("Red Led is lighting!!!\n\n");
         i=0;
        } else
        {
        Blue_LED_ClrVal(Blue_LED_DeviceData);
        Green_LED_SetVal(Green_LED_DeviceData);
        Red_LED_SetVal(Red_LED_DeviceData);
        printf("Blue Led is lighting!!!\n\n");
        i=0x01;
        }
 
       }
 
 函数功能:中断触发时,进入PIT_isr中断函数,在函数中判断i值为01,相应的点亮红色或蓝色的LED灯,同时会分别发送两组字符串到PC机。

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-8-8 13:59:08 | 显示全部楼层

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

         While1)循环
while1)循环中的所有的代码注释掉
编码修改完成后,亲们,可别忘了重新编译一下哦。
        iv 实验结果
        代码编译成功后,就可以连接FRDM-KL25Z开发板进行调试啊,童鞋们会观察到板子上的RGB LED每隔0.5秒变换颜色,并且会分别发送 Red Led is lighting!!!或者“Blue Led is lighting!!!PC机,可通过串口猎人工具观察到(如图43所示)。
Capture6.JPG

43  串口猎人界面

PIT工程下载 PIT_test.rar (753.99 KB, 下载次数: 81)
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

9

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-8-8 16:22:58 | 显示全部楼层

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

回复第 81 楼 于2013-08-08 10:11:31发表:
回复第 80 楼 于2013-08-07 15:21:59发表:
不好意思,我看了这些文档,还是没得出怎么算出来的,我根据公式算出来就是不对啊,希望能给个计算的例子,最好串口0,一个例子,串口1一个例子,例程上的串口0, UART0_BDH = 0x00;
UART0_BDL = 0x1a;//波特率9600这么设置为9600的波特率,可我怎么也算不出BDL=0x1a啊,希望给帮忙解答下,谢谢了。
我以K60的手册中给出的UART波特率图表(如图所示)给你举例吧。

红线标注地方你可以不用看,因为这是K60的UART模块波特率微调配置位段,这在KL25中是没有的,我以配置波特率9600为例吧,由于UART时钟频率为10.2MHz,选择SBR=66,即UARTn_BDH的4~0位取0,UARTn_BDL=0x42。根据公式 
Baud Rate=UART module clock / (16 × SBR[12:0],可得10.2x1000000/(16x66)=9659.09,约等于9600,偏差为0.62%。
 
 

 
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

9

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-8-8 16:24:41 | 显示全部楼层

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

版主,关键是KL25没表可查啊,那我该怎么设置波特率啊,麻烦支个招。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-8-8 17:18:08 | 显示全部楼层

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

回复第 87 楼 于2013-08-08 16:24:41发表:
版主,关键是KL25没表可查啊,那我该怎么设置波特率啊,麻烦支个招。
 
        是的,KL25手册中没有对应的波特率表,但是这不妨碍如何配置正确的波特率,86楼的回复只是为了更形象的说明波特率设置。
比如我举个设置UART1波特率115200的例子,UART1的时钟来源是Bus clock,假设Bus clock频率为24MHz,根据波特率配置公式:
        Baud Rate=UART module clock/(16 × SBR[12:0]
        可得:
         SBR[120]=UART module clock/Baud Ratex16
                              =24x106/115200x16)≈13.02.
 
即需配置: UART1_BDH4~0位取0UART1_BDL=0x0D
 
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2013-8-9 09:01:21 | 显示全部楼层

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

接下来还会给大家介绍IAR和Keil工程编译方面的问题!
亲们,好持续关注哦
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

11

帖子

0

新手上路

Rank: 1

积分
15
最后登录
1970-1-1
发表于 2013-8-20 19:48:33 | 显示全部楼层

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

支持 
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-22 16:28 , Processed in 0.107323 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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