注册 登录
查看: 9734|回复: 88

[KL26] 【一天攻破KL26】BUG汇总

[复制链接]
发表于 2014-1-4 17:09:20 | 显示全部楼层 |阅读模式
一天攻破KL代码系列 即将公布,先建个帖子,收集 bug 。

KL 的 价格 跟 XS128 差不多,不过 KL的 超频能力 PLL 可达 220M ,内核 可达 110M ,bus & flash 可达 40M ,带 DMA 。
LPTMR(1路) 和 TPM 模块(3路)  可直接支持 脉冲计数(当然也可以 DMA 脉冲计数)
DMA 采集 鹰眼的速率 达到 115帧每秒 (40cm 软排线)
函数接口 跟 山外K60 基本相同,切换两款 单片机,毫无压力
5.2新发现的bug:
UAR0 的E20/E21管脚bug:
关于查询接收多个字符串的例程的疑问 - 智能车讨论区 - 山外论坛 http://www.vcan123.com/forum.php?mod=viewthread&tid=7612

5.2版本已经修复了下面的bug:

===================================  PLL bug ===============================
在 chip/src/MKL_mcg.c 里的pll_init函数开头加入:
  1.     SIM_SOPT2 |= (0         //选择 PLL时钟
  2.                   | SIM_SOPT2_PLLFLLSEL_MASK
  3.                  );
如不加入,那么在不使用 UART0 的情况下,TPM、LPTMR 等模块会出现异常。例如不能输出PWM。


===================================  新增 LPTMR 脉冲计数 ===============================
之前漏了加上去,在原有代码基础上,替换一下 main 函数即可
  1. /*!
  2. *  @brief      main函数
  3. *  @since      v5.0
  4. *  @note       山外 LPTMR 脉冲计数实验,需要短接 PTC5 和 PTE30
  5. */
  6. void  main(void)
  7. {
  8. #define INT_COUNT  0xFFFF          //LPT 产生中断的计数次数

  9.     uint16 count;

  10.     tpm_pwm_init(TPM0, TPM_CH3, 100, 50);                       //TPM模块产生PWM,用 TPM0_CH3 ,即 PTE30 ,频率为 100,占空比 50%
  11.                                                                 //修改频率,验证 不同PWM下计数值是多少。

  12.     lptmr_pulse_init(LPT0_ALT2,INT_COUNT, LPT_Rising);          //初始化脉冲计数器,用LPT0_ALT2,即PTC5输入,每隔INT_COUNT产生中断(需要开中断才能产生中断),上升沿触发

  13.     while(1)
  14.     {
  15.         lptmr_pulse_clean();                                    //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)

  16.         pit_delay_ms(PIT0,1000);                                //利用 PIT 延时时间,LPTMR模块进行 计算,累加 TPM 产生的PWM脉冲

  17.         count           =   lptmr_pulse_get();                  //保存脉冲计数器计算值

  18.         printf("LPTMR脉冲计数为:%d\n",   count);                 //打印计数值
  19.     }
  20. }
=====================================LPTMR 脉冲计数bug===================================
MKL_lptmr.c 里的 lptmr_pulse_init函数 替换为:
  1. void lptmr_pulse_init(LPT0_ALTn altn, uint16 count, LPT_CFG cfg)
  2. {
  3. #if defined(MK60DZ10)
  4.     OSC_CR |= OSC_CR_ERCLKEN_MASK;                              //使能 OSCERCLK
  5. #elif (defined(MK60F15) || defined(MKL26Z4))
  6.     OSC0_CR |= OSC_CR_ERCLKEN_MASK;                              //使能 OSCERCLK
  7. #endif

  8.     // 开启模块时钟
  9.     SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;                        //使能LPT模块时钟

  10.     //设置输入管脚
  11.     if(altn == LPT0_ALT1)
  12.     {
  13.         port_init(PTA19, ALT6 );            //在PTA19上使用 ALT6
  14.     }
  15.     else if(altn == LPT0_ALT2)
  16.     {
  17.         port_init(PTC5, ALT3 );             //在PTC5上使用 ALT3
  18.     }
  19.     else                                    //不可能发生事件
  20.     {
  21.         ASSERT(0);                          //设置管脚有误?
  22.     }

  23.     // 清状态寄存器
  24.     LPTMR0_CSR = 0x00;                                          //先关了LPT,这样才能设置时钟分频,清空计数值等
  25.    
  26. #if defined(MK60DZ10)
  27.     //选择时钟源
  28.     LPTMR0_PSR  =   ( 0
  29.                       | LPTMR_PSR_PCS(1)          //选择时钟源: 0 为 MCGIRCLK ,1为 LPO(1KHz) ,2为 ERCLK32K ,3为 OSCERCLK
  30.                       //| LPTMR_PSR_PBYP_MASK     //旁路 预分频/干扰滤波器 ,即不用 预分频/干扰滤波器(注释了表示使用预分频/干扰滤波器)
  31.                       //| LPTMR_PSR_PRESCALE(4)     //预分频值 = 2^(n+1) ,n = 0~ 0xF
  32.                     );
  33. #elif (defined(MK60F15) || defined(MKL26Z4))
  34.     //选择时钟源
  35.     LPTMR0_PSR  =   ( 0
  36.                       | LPTMR_PSR_PCS(3)          //选择时钟源: 0 为 MCGIRCLK ,1为 LPO(1KHz) ,2为 ERCLK32K ,3为 OSCERCLK
  37.                       //| LPTMR_PSR_PBYP_MASK     //旁路 预分频/干扰滤波器 ,即不用 预分频/干扰滤波器(注释了表示使用预分频/干扰滤波器)
  38.                       | LPTMR_PSR_PRESCALE(4)     //预分频值 = 2^(n+1) ,n = 0~ 0xF
  39.                     );
  40. #endif
  41.    
  42.     // 设置累加计数值
  43.     LPTMR0_CMR  =   LPTMR_CMR_COMPARE(count);                   //设置比较值

  44.     // 管脚设置、使能中断
  45.     LPTMR0_CSR  =  (0
  46.                     | LPTMR_CSR_TPS(altn)       // 选择输入管脚 选择
  47.                     | LPTMR_CSR_TMS_MASK        // 选择脉冲计数 (注释了表示时间计数模式)
  48.                     | ( cfg == LPT_Falling ?  LPTMR_CSR_TPP_MASK :   0  )  //脉冲计数器触发方式选择:0为高电平有效,上升沿加1
  49.                     | LPTMR_CSR_TEN_MASK        //使能LPT(注释了表示禁用)
  50.                     | LPTMR_CSR_TIE_MASK        //中断使能
  51.                     //| LPTMR_CSR_TFC_MASK      //0:计数值等于比较值就复位;1:溢出复位(注释表示0)
  52.                    );
  53. }
===============================I2C管脚bug====================================
MKL_i2c.c 文件里 的 i2c_init函数管脚配置有误。
  1.     if(i2cn == I2C0)
  2.     {
  3.         /* 开启时钟 */
  4. #if (defined(MK60DZ10) || defined(MKL26Z4) )
  5.         SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;           //开启 I2C0时钟
  6. #elif defined( MK60F15)
  7.         SIM_SCGC4 |= SIM_SCGC4_IIC0_MASK;           //开启 I2C0时钟
  8. #endif

  9.         sclk =  bus_clk_khz * 1000;

  10.         /* 配置 I2C0功能的 GPIO 接口 */
  11.         if((I2C0_SCL_PIN == PTB0) || (I2C0_SCL_PIN == PTB2) || (I2C0_SCL_PIN == PTD8)  )
  12.             port_init (I2C0_SCL_PIN, ALT2 | PULLUP );
  13.         else
  14.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?

  15.         if ((I2C0_SDA_PIN == PTB1) ||  (I2C0_SDA_PIN == PTB3) || (I2C0_SDA_PIN == PTD9) )
  16.             port_init (PTB1, ALT2 | PULLUP );
  17.         else
  18.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?
  19.     }
  20.     else
  21.     {
  22.         /* 开启时钟 */
  23. #if (defined(MK60DZ10) || defined(MKL26Z4) )
  24.         SIM_SCGC4 |= SIM_SCGC4_I2C1_MASK;           //开启 I2C1时钟
  25. #elif defined(MK60F15)
  26.         SIM_SCGC4 |= SIM_SCGC4_IIC1_MASK;           //开启 I2C1时钟
  27. #endif

  28.         sclk =  core_clk_khz * 1000;

  29.         /* 配置 I2C1功能的 GPIO 接口 */
  30.         if(I2C1_SCL_PIN == PTE1)
  31.             port_init (I2C1_SCL_PIN, ALT6 | PULLUP );
  32.         else if(I2C1_SCL_PIN == PTC10)
  33.             port_init (I2C1_SCL_PIN, ALT2 | PULLUP );
  34.         else
  35.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?

  36.         if(I2C1_SDA_PIN == PTE0)
  37.             port_init (I2C1_SDA_PIN, ALT6 | PULLUP );
  38.         else if (I2C1_SDA_PIN == PTC11)
  39.             port_init (I2C1_SDA_PIN, ALT2 | PULLUP );
  40.         else
  41.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?
  42.     }
改成
  1.     if(i2cn == I2C0)
  2.     {
  3.         /* 开启时钟 */
  4. #if (defined(MK60DZ10) || defined(MKL26Z4) )
  5.         SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;           //开启 I2C0时钟
  6. #elif defined( MK60F15)
  7.         SIM_SCGC4 |= SIM_SCGC4_IIC0_MASK;           //开启 I2C0时钟
  8. #endif

  9.         sclk =  bus_clk_khz * 1000;

  10.         /* 配置 I2C0功能的 GPIO 接口 */
  11.         if((I2C0_SCL_PIN == PTB0) || (I2C0_SCL_PIN == PTB2) || (I2C0_SCL_PIN == PTC8)  )
  12.             port_init (I2C0_SCL_PIN, ALT2 | PULLUP );
  13.         else if(I2C0_SCL_PIN == PTE19)
  14.             port_init (I2C0_SCL_PIN, ALT4 | PULLUP );
  15.         else if(I2C0_SCL_PIN == PTE24)
  16.             port_init (I2C0_SCL_PIN, ALT5 | PULLUP );
  17.         else
  18.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?

  19.         if ((I2C0_SDA_PIN == PTB1) ||  (I2C0_SDA_PIN == PTB3) || (I2C0_SDA_PIN == PTC9) )
  20.             port_init (I2C0_SDA_PIN, ALT2 | PULLUP );
  21.         else if(I2C0_SDA_PIN == PTE18)
  22.             port_init (I2C0_SDA_PIN, ALT4 | PULLUP );
  23.         else if(I2C0_SDA_PIN == PTE25)
  24.             port_init (I2C0_SDA_PIN, ALT5 | PULLUP );
  25.         else
  26.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?
  27.     }
  28.     else
  29.     {
  30.         /* 开启时钟 */
  31. #if (defined(MK60DZ10) || defined(MKL26Z4) )
  32.         SIM_SCGC4 |= SIM_SCGC4_I2C1_MASK;           //开启 I2C1时钟
  33. #elif defined(MK60F15)
  34.         SIM_SCGC4 |= SIM_SCGC4_IIC1_MASK;           //开启 I2C1时钟
  35. #endif

  36.         sclk =  core_clk_khz * 1000;

  37.         /* 配置 I2C1功能的 GPIO 接口 */
  38.         if(I2C1_SCL_PIN == PTE1)
  39.             port_init (I2C1_SCL_PIN, ALT6 | PULLUP );
  40.         else if((I2C1_SCL_PIN == PTA3) || (I2C1_SCL_PIN == PTC1) || (I2C1_SCL_PIN == PTC10)  )
  41.             port_init (I2C1_SCL_PIN, ALT2 | PULLUP );
  42.         else
  43.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?

  44.         if(I2C1_SDA_PIN == PTE0)
  45.             port_init (I2C1_SDA_PIN, ALT6 | PULLUP );
  46.         else if ((I2C1_SDA_PIN == PTA4) || (I2C1_SDA_PIN == PTC2) || (I2C1_SDA_PIN == PTC11)  )
  47.             port_init (I2C1_SDA_PIN, ALT2 | PULLUP );
  48.         else
  49.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?
  50.     }
===============================flash bug =====================================

见 44楼 BMN李 提供的解决方法。


====================================================================================================
MKL_BME.h 的bug

关于include.h里面的MKL_BME.h,什么情况 - 智能车讨论区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php?mod=viewthread&tid=2258

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2014-1-4 18:07:20 | 显示全部楼层
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-1-4 18:24:39 | 显示全部楼层
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-1-4 20:38:19 | 显示全部楼层
S128 k60  kl 是不是都可以参加比赛啊
回复 支持 反对

使用道具 举报

发表于 2014-1-4 20:42:32 | 显示全部楼层
电子555 发表于 2014-1-4 20:38
S128 k60  kl 是不是都可以参加比赛啊

XS128 、 K60 、KL26  都可以 同时参赛,属于 不同 系列
回复 支持 反对

使用道具 举报

发表于 2014-1-5 10:16:30 | 显示全部楼层
实验室 的师弟 说,快点出啊,考完试,准备回家啦
回复 支持 反对

使用道具 举报

发表于 2014-1-11 16:32:00 | 显示全部楼层
C:\Users\Jack\Desktop
这是什么啊?#if 0和#endif是什么啊?还有第二个等号后面都没东西。。。求解。
回复 支持 反对

使用道具 举报

发表于 2014-1-11 16:33:01 | 显示全部楼层
这是什么啊?#if 0和#endif是什么啊?还有第二个等号后面都没东西。。。求解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-1-11 18:24:08 | 显示全部楼层
BMN李 发表于 2014-1-11 16:33
这是什么啊?#if 0和#endif是什么啊?还有第二个等号后面都没东西。。。求解。

这个是 代码注释,这部分 代码 不需要
回复 支持 反对

使用道具 举报

发表于 2014-1-14 23:17:52 | 显示全部楼层
tpm_pulse_init(TPM2,TPM_CLKIN0,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
KL26配置TPM脉冲计数,怎么去配置管脚啊?怎么知道是配置的那个管脚?
回复 支持 反对

使用道具 举报

发表于 2014-1-15 10:47:06 | 显示全部楼层
BMN李 发表于 2014-1-14 23:17
tpm_pulse_init(TPM2,TPM_CLKIN0,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频 ...

TPM_CLKIN0  ,你查一下 管脚复用表 就知道,我们有专门头文件配置管脚复用。
回复 支持 反对

使用道具 举报

发表于 2014-1-15 16:30:27 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-15 10:47
TPM_CLKIN0  ,你查一下 管脚复用表 就知道,我们有专门头文件配置管脚复用。

找到了,起初没有注意到。
回复 支持 反对

使用道具 举报

发表于 2014-1-15 20:13:06 | 显示全部楼层
山外哥,怎么lptmr和TPM脉冲计数差别很大呢?还有就是lptmr没输入脉冲都还有值呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-15 20:14:49 | 显示全部楼层
BMN李 发表于 2014-1-15 20:13
山外哥,怎么lptmr和TPM脉冲计数差别很大呢?还有就是lptmr没输入脉冲都还有值呢?

不会啊,我们测试的时候,两者 相差 非常小的啊
回复 支持 反对

使用道具 举报

发表于 2014-1-15 22:29:20 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-15 20:14
不会啊,我们测试的时候,两者 相差 非常小的啊

lptmr和TPM脉冲计数操作是一样的嘛?例程里面没lptmr的脉冲计数呢?不知道是不是操作的问题。你们配置的PTC5吧?
回复 支持 反对

使用道具 举报

发表于 2014-1-15 22:31:05 | 显示全部楼层
BMN李 发表于 2014-1-15 22:29
lptmr和TPM脉冲计数操作是一样的嘛?例程里面没lptmr的脉冲计数呢?不知道是不是操作的问题。你们配置的P ...

有 LPTMR 例程啊
回复 支持 反对

使用道具 举报

发表于 2014-1-15 22:31:13 | 显示全部楼层
BMN李 发表于 2014-1-15 22:29
lptmr和TPM脉冲计数操作是一样的嘛?例程里面没lptmr的脉冲计数呢?不知道是不是操作的问题。你们配置的P ...

有 LPTMR 脉冲计数 例程啊
回复 支持 反对

使用道具 举报

发表于 2014-1-16 23:04:30 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-15 22:31
有 LPTMR 脉冲计数 例程啊

没看到LPTMR脉冲计数例程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-1-16 23:08:10 | 显示全部楼层
BMN李 发表于 2014-1-16 23:04
没看到LPTMR脉冲计数例程。

漏了加脉冲计数的例程上去,明天加上去。

不过,根据 TPM 的那个例子,套进去,也能自己写啊,函数都提供好了
回复 支持 反对

使用道具 举报

发表于 2014-1-17 16:39:07 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-16 23:08
漏了加脉冲计数的例程上去,明天加上去。

不过,根据 TPM 的那个例子,套进去,也能自己写啊,函数都提 ...

嗯嗯。我就是套的TPM的例程,就是有问题。用的PTA19引脚。我这KL25板子它用的有源晶振,只接了PTA18引脚。用PTA19来脉冲计数应该没问题吧?
回复 支持 反对

使用道具 举报

发表于 2014-1-17 19:44:11 | 显示全部楼层
BMN李 发表于 2014-1-17 16:39
嗯嗯。我就是套的TPM的例程,就是有问题。用的PTA19引脚。我这KL25板子它用的有源晶振,只接了PTA18引脚。 ...

可以的啊,K60 那里,我们的脉冲计数例程就是用A19
回复 支持 反对

使用道具 举报

发表于 2014-1-17 19:51:03 | 显示全部楼层
BMN李 发表于 2014-1-17 16:39
嗯嗯。我就是套的TPM的例程,就是有问题。用的PTA19引脚。我这KL25板子它用的有源晶振,只接了PTA18引脚。 ...

已经 把 我们 的 LPTMR 脉冲计数例程 发上到楼主贴那里!
回复 支持 反对

使用道具 举报

发表于 2014-1-17 23:48:21 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-17 19:51
已经 把 我们 的 LPTMR 脉冲计数例程 发上到楼主贴那里!

还是不行!不知道是不是板子的问题,LPTMR两个端口都不正常。TPM的脉冲计数都是正常的。我用的是KL25的板子,看到里面一个函数写的K60或者KL25,是不是这个问题哦?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-1-18 00:04:29 | 显示全部楼层
BMN李 发表于 2014-1-17 23:48
还是不行!不知道是不是板子的问题,LPTMR两个端口都不正常。TPM的脉冲计数都是正常的。我用的是KL25的板 ...

这个我还不好确定,我这边测试我们的板子,都是非常稳定的,跟TPM的结果也非常接近。
不同系列的板子,代码可能不兼容。
回复 支持 反对

使用道具 举报

发表于 2014-1-18 15:31:10 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-18 00:04
这个我还不好确定,我这边测试我们的板子,都是非常稳定的,跟TPM的结果也非常接近。
不同系列的板子,代 ...

问题解决了!KL25的PTC5管脚的管脚复用ALT3才是LPTMR,不是ALT4,这里一改什么问题都没有了。先前不改应该还是有一个管脚能用呀,真心纠结。哎,先这样了,做车子了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-1-19 16:13:23 来自手机 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-18 00:04
这个我还不好确定,我这边测试我们的板子,都是非常稳定的,跟TPM的结果也非常接近。
不同系列的板子,代 ...

哎,它又抽风了,时而好时而坏的!没有脉冲它都一直在加,这是什么原因?
回复 支持 反对

使用道具 举报

发表于 2014-1-21 13:47:50 | 显示全部楼层
怎么没人回复呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-21 14:33:55 | 显示全部楼层
BMN李 发表于 2014-1-21 13:47
怎么没人回复呢?

这个不好回答是什么原因。
回复 支持 反对

使用道具 举报

发表于 2014-1-21 18:01:23 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-21 14:33
这个不好回答是什么原因。

那个就是个BUG哦!我看了KL26资料,它PTC5的LPTMR也是ALT3,K60才是ALT4.找到BUG有奖励没呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-21 18:43:47 | 显示全部楼层
BMN李 发表于 2014-1-21 18:01
那个就是个BUG哦!我看了KL26资料,它PTC5的LPTMR也是ALT3,K60才是ALT4.找到BUG有奖励没呢?

嗯嗯,这个是个bug。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 13:22:12 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-21 18:43
嗯嗯,这个是个bug。

这下问题是真的解决了,你们代码没选择时钟源呢!!模仿你们代码整了下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-1-23 13:16:38 | 显示全部楼层
怎么发不了帖子的哦??
回复 支持 反对

使用道具 举报

发表于 2014-1-26 13:31:08 | 显示全部楼层
确实是缺少是PSR这个寄存器的配置,自己重新配了下可以用
回复 支持 反对

使用道具 举报

发表于 2014-1-26 13:33:14 | 显示全部楼层
xiaotsky 发表于 2014-1-26 13:31
确实是缺少是PSR这个寄存器的配置,自己重新配了下可以用

可以详细说明一下吗?哪里缺少了?
回复 支持 反对

使用道具 举报

发表于 2014-1-26 13:34:30 | 显示全部楼层
xiaotsky 发表于 2014-1-26 13:31
确实是缺少是PSR这个寄存器的配置,自己重新配了下可以用

我们是通过宏条件编译来配置的啊。
回复 支持 反对

使用道具 举报

发表于 2014-1-26 13:42:26 | 显示全部楼层
BMN李 发表于 2014-1-22 13:22
这下问题是真的解决了,你们代码没选择时钟源呢!!模仿你们代码整了下。

强烈支持,非常感谢哥们

我搞明白了,我们做实验的时候,直接先测LPTMR 延时,然后用 LPTMR 脉冲计数,中途没断电,所以一直没发现问题!!!非常感谢。
回复 支持 反对

使用道具 举报

发表于 2014-1-26 13:44:16 | 显示全部楼层
xiaotsky 发表于 2014-1-26 13:31
确实是缺少是PSR这个寄存器的配置,自己重新配了下可以用

搞懂了,原先我们先测LPTMR延时,没断电就测LPTMR脉冲计数,导致一直以为代码正常!!
失误啊!!!
回复 支持 反对

使用道具 举报

发表于 2014-1-26 16:39:33 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-26 13:42
强烈支持,非常感谢哥们

我搞明白了,我们做实验的时候,直接先测LPTMR 延时,然后用 LPTMR ...

求奖励哇!!
回复 支持 反对

使用道具 举报

发表于 2014-1-26 16:47:14 | 显示全部楼层
BMN李 发表于 2014-1-26 16:39
求奖励哇!!

过年后,给你八折购买我们的KL核心板咯。再大的优惠我就没法给到了。
回复 支持 反对

使用道具 举报

发表于 2014-1-26 16:54:14 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-26 16:47
过年后,给你八折购买我们的KL核心板咯。再大的优惠我就没法给到了。

这个。。。我们做了KL25的核心板,已经打样很多了。
回复 支持 反对

使用道具 举报

发表于 2014-2-12 21:05:33 | 显示全部楼层
说明里是 kl26有LPTMR(1路) 和 TPM 模块(2路)

但是看到kl26 的datasheet 上面写着 有TPM0(6 channel) TPM1(2 channel) TPM2(2 channel)还有一个16-bit low-power timer 即LPTMR模块,山外哥怎么只讲有2路TPM。

还有就是kL26的tpm模块好像没有写quadrature decoder功能 不知道能不能正交解码呢?
回复 支持 反对

使用道具 举报

发表于 2014-2-14 09:28:52 | 显示全部楼层
flycoor 发表于 2014-2-12 21:05
说明里是 kl26有LPTMR(1路) 和 TPM 模块(2路)

但是看到kl26 的datasheet 上面写着 有TPM0(6 channel ...

笔误,TPM是有3路,没有正交解码功能,但有脉冲计数功能。
回复 支持 反对

使用道具 举报

发表于 2014-2-15 20:45:13 | 显示全部楼层
kl25用kl26的flash代码,要改哪里啊?
回复 支持 反对

使用道具 举报

发表于 2014-2-22 22:03:42 | 显示全部楼层
本帖最后由 BMN李 于 2014-2-22 22:12 编辑

经研究,KL26的Flash代码有BUG!!代码没等待命令完成,就在清除访问出错标志位(对照K60的代码得知,但是在我这KL25上还是不好使!!)。对照苏大的例程,现在的代码终于好使了!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-2-23 10:35:33 | 显示全部楼层
BMN李 发表于 2014-2-22 22:03
经研究,KL26的Flash代码有BUG!!代码没等待命令完成,就在清除访问出错标志位(对照K60的代码得知,但是在 ...

非常感谢。暂时帮着一些重要事情,稍后再测试。
回复 支持 反对

使用道具 举报

发表于 2014-3-2 13:37:15 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-23 10:35
非常感谢。暂时帮着一些重要事情,稍后再测试。

用了这么久,还没什么问题哦。
回复 支持 反对

使用道具 举报

发表于 2014-3-12 17:30:51 | 显示全部楼层
void set_vector_handler(VECTORn_t vector , void pfunc_handler(void))
{
    extern uint32 __VECTOR_RAM[];

    ASSERT(SCB_VTOR == (uint32)__VECTOR_RAM);  //断言,检测中断向量表是否在 RAM 里

    __VECTOR_RAM[vector] = (uint32)pfunc_handler;
}
程序运行时,这里的断言不通过。怎么回事,求解答。
回复 支持 反对

使用道具 举报

发表于 2014-3-12 17:31:34 | 显示全部楼层
雪瑞鸟鸣 发表于 2014-3-12 17:30
void set_vector_handler(VECTORn_t vector , void pfunc_handler(void))
{
    extern uint32 __VECTOR_ ...

KL26代码里的
回复 支持 反对

使用道具 举报

发表于 2014-3-23 01:12:35 | 显示全部楼层
FIRE_UI_VAR.c 里关于快加的处理括号位置错误,导致快加时数据会超过设定的最大值。不过影响不大。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-3-23 11:14:51 | 显示全部楼层
山外哥,有没有KL26的最新例程供下载的!迫切需求!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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