查看: 2183|回复: 4

[求助] K64F_PWM问题

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-7-22 08:42:03 | 显示全部楼层 |阅读模式
    问题如题,研读了Kinetis SDK v.2.0 API Reference Manual.pdf文档后确实有所收获,但在PWM上又有许多问题。使用KSD2.0.0.
    肯定是无时间偷懒,尽量采用现成的案例,减少时间。但在加载 fsl_ftm.h、 fsl_ftm.c这两个程序编程时出现问题。
    按照其说明和里面的函数,将手册里的语句拷贝下来分解成两段:一段为变量初始化、一段为PWM初始化,设置好pin_mux.c,运行报错为:
    FTM_StartTimer(BOARD_FTM_BASEADDR, kFTM_SystemClock);
    这条函数在fst_ftm.h中,拷贝如下:
    //static void FTM_StartTimer (FTM_Type *base, ftm_clock_source_t clockSource){
    static inline void FTM_StartTimer(FTM_Type *base, ftm_clock_source_t clockSource){
        uint32_t reg = base->SC;//————609
        reg &= ~(FTM_SC_CLKS_MASK);//————610
        reg |= FTM_SC_CLKS(clockSource);//————611
        base->SC = reg;//————612
    }

    运行报错简直是莫名奇妙,拷贝如下:
    Error[Pe018]: expected a ")" F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 609
    Error[Pe079]: expected a type specifier F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 609
    Error[Pe145]: function "GPIO_Type" may not be initialized F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 609
    Error[Pe029]: expected an expression F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 610
    Error[Pe032]: expression must have arithmetic type F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 610
    Error[Pe029]: expected an expression F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 611
    Error[Pe032]: expression must have arithmetic type F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 611
    Error[Pe029]: expected an expression F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 612
    Error[Pe032]: expression must have arithmetic type F:\edaExams\example\exam_freescale\mk64\FRDM-K64F\boards\frdmk64f\driver_examples\i2c\i2clcd8700\fsl_ftm.h 612
    Error while running C/C++ Compiler

    不知应该改哪里,尝试按照pdf文档改都不成功。无奈退训一做完成的网友的PWM,照搬一定出错——版本可能不同,PIN设置位置不一样,端口设置不同,。。。经验证明,不是完整的工程复制,几乎是无法运行成功的。照改也不能运行。
    难道给的案例有错!
    求助,先谢谢了。
    实话实说,在SDK1.0.0中倒有一个ftm案例,可以运行成功。但一直在实验SDK2.0.0,退回到1.0又需要重新一一试验过,费力不讨好。

    我知道答案 目前已有4人回答
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-3 08:47
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    79

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    458
    最后登录
    2023-7-15
    发表于 2016-7-22 15:21:31 | 显示全部楼层
    static inline void FTM_StartTimer(FTM_Type *base, ftm_clock_source_t clockSource){
        uint32_t reg = base->SC;//————609
        reg &= ~(FTM_SC_CLKS_MASK);//————610
        reg |= FTM_SC_CLKS(clockSource);//————611
        base->SC = reg;//————612
    }
    把你注释的//————609   //————610  //————611  //————612 删了重新编译试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-7-22 21:38:42 | 显示全部楼层
    bkn1860-199212 发表于 2016-7-22 15:21
    static inline void FTM_StartTimer(FTM_Type *base, ftm_clock_source_t clockSource){
        uint32_t reg  ...

    您好!~注释是为了能与文同步易看懂现加的,源程序中没有。谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-3 08:47
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    79

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    458
    最后登录
    2023-7-15
    发表于 2016-7-22 22:10:18 | 显示全部楼层
    我的意思是你报的那些错可能是你添加注释后引起的,因为这个函数是.h里面定义的,有时候有可能多一个空格都会报错。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-7-24 05:00:57 | 显示全部楼层
    问题已解——粗心造成。其中的一个变量在前边的编程中已定义过了,由于采用模块化方式,没有检查出来。结果逐步排查法找到了。特提出,在定义变量时最好见词识意,以大小写方式定义,但有时偷懒定义省略简短容易重复定义。reg是这段语句元的,但在前我也定义了reg变量,由于LCD。
    特此说明,并对给予帮助的网友们致谢。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 19:09 , Processed in 0.093573 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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