查看: 2897|回复: 6

[已解决] KL25Z的驱动库就是官方发布的例程包里面提供的那些么(已解决)

[复制链接]

该用户从未签到

3

主题

17

帖子

0

注册会员

Rank: 2

积分
57
最后登录
1970-1-1
发表于 2014-3-3 17:41:09 | 显示全部楼层 |阅读模式
刚刚开始学这个,之前用别的单片机都是什么淘宝店整理好的资料,没什么经验。现在想要用一下FRDM-KL25Z,官方给的样板程序似乎为了能够在各个平台上移植,写的看起来很乱,有没有别的专门针对IAR的驱动?
还有就是我就是想通过改一下寄存器的值来改一下时钟,手册很好懂,但是应该改宏定义的哪些地方啊?宏定义太多了也实在是感觉迷糊。
另外从王宜怀老师写的那个红色的M0的书附的光盘里面的头文件可不可以直接当做驱动来放到工程里面?
我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-4 09:50:11 | 显示全部楼层

RE:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

帖子

0

注册会员

Rank: 2

积分
57
最后登录
1970-1-1
 楼主| 发表于 2014-3-4 13:52:10 | 显示全部楼层

回复:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

回复第 2 楼 于2014-03-04 09:50:11发表:
首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。 

麻烦问一下,在PEE模式下能不能修改内核时钟
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-4 13:56:31 | 显示全部楼层

回复:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

回复第 3 楼 于2014-03-04 13:52:10发表:
回复第 2 楼 于2014-03-04 09:50:11发表:
首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。 

麻烦问一下,在PEE模式下能不能修改内核时钟
 

是可以修改的,直接修改相关的寄存器的参数比。
你修改试试,如果有问题告诉我。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

帖子

0

注册会员

Rank: 2

积分
57
最后登录
1970-1-1
 楼主| 发表于 2014-3-4 15:36:52 | 显示全部楼层

回复:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

回复第 4 楼 于2014-03-04 13:56:31发表:
回复第 3 楼 于2014-03-04 13:52:10发表:
回复第 2 楼 于2014-03-04 09:50:11发表:
首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。 

麻烦问一下,在PEE模式下能不能修改内核时钟
 

是可以修改的,直接修改相关的寄存器的参数比。
你修改试试,如果有问题告诉我。
 

麻烦问一下~这样在PEE模式下能不能修改内核时钟
while(1)
{
switch(temp3)
      {
      case 0:MCG_C5|=(MCG_C5&0xE3);
                   MCG_C6|=(MCG_C5&0xEC);
                   temp3=1;
                    break;
      case 1:MCG_C5|=(MCG_C5&0xE4);
                   MCG_C6|=(MCG_C5&0xE1);
                   temp3=0;
                   break;
      default: break;
      }
RGB_change();
delay();
}
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

17

帖子

0

注册会员

Rank: 2

积分
57
最后登录
1970-1-1
 楼主| 发表于 2014-3-5 10:19:22 | 显示全部楼层

回复:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

回复第 2 楼 于2014-03-04 09:50:11发表:
首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。 

果然直接修改寄存器的值就可以,我上面的程序……简直错的无法直视,以下为现在的代码。虽然这样还是比较笨,不过总归能实现……谢谢大神
switch(temp3)
        {
      case 0:
             MCG_C5=((MCG_C5&0xE0)|0x03);
             MCG_C6=((MCG_C5&0xE0)|0x06);
             temp3=1;
             break;
      case 1:
             MCG_C5=((MCG_C5&0xE0)|0x04);
             MCG_C6=((MCG_C6&0xE0)|0x02);
             temp3=0;
             break;
      default: break;
 
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-5 10:37:15 | 显示全部楼层

回复:【求助】KL25Z的驱动库就是官方发布的例程包里面提供的那些么

回复第 6 楼 于2014-03-05 10:19:22发表:
回复第 2 楼 于2014-03-04 09:50:11发表:
首先还是建议你好好看看用户手册中的时钟和MCG章节,尤其是围绕时钟框图看。
另外,关于修改时钟,请查看官方例程MCG.c中这个函数:
int pll_init(int crystal_val, unsigned char hgo_val, unsigned char erefs_val, signed char prdiv_val, signed char vdiv_val, unsigned char mcgout_select)
看明白了,你就知道如何去设置你想要的时钟了。
关于书的例程,你可以尝试一下,应该也是可以用的。
如果还是有问题,可以继续提问。 

果然直接修改寄存器的值就可以,我上面的程序……简直错的无法直视,以下为现在的代码。虽然这样还是比较笨,不过总归能实现……谢谢大神
switch(temp3)
        {
      case 0:
             MCG_C5=((MCG_C5&0xE0)|0x03);
             MCG_C6=((MCG_C5&0xE0)|0x06);
             temp3=1;
             break;
      case 1:
             MCG_C5=((MCG_C5&0xE0)|0x04);
             MCG_C6=((MCG_C6&0xE0)|0x02);
             temp3=0;
             break;
      default: break;
 
 

是的,直接修改相关PLL的倍频因子从而达到修改MCGPLLCLK,楼主如果在使用中还有问题,欢迎提问。
另外注意,各个频率配置后要在RM的规定范围内,主频不要超频工作。
 
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-19 01:23 , Processed in 0.110045 second(s), 27 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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