查看: 3160|回复: 5

[其他] 每天解决一个问题33天2问 :KSDK1.2库中TPM的输出PWM占空比修改

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16873
    最后登录
    1970-1-1
    发表于 2015-9-26 22:46:54 | 显示全部楼层 |阅读模式
    本帖最后由 lkl0305 于 2015-9-27 00:07 编辑

    今天继续给大家分享一下KSDK1.2库中TPM输出PWM的占空比范围修改。

    =============================================

    一、问题描述:
    在使用TPM输出PWM时的占空比在KSDK1.2库中的范围规定在了0-100%,而且只能为整数,那么相当于只有0-100个分度。
    3997.jpg
    而如果想要更多点分度怎么办,比如0-255呢?

    二、解决办法:
    1、我们找个简单点的函数来修改一下吧。经分析,在TPM_DRV_PwmStart函数中可以实现对PWM的占空比进行设置:
    3994.jpg
    2、位置在如下,首先用断言判断输入的数据是否小于等于100,然后在下面将输入的百分比数据转换成计数值。
    3998.jpg
    3、那我只要把程序改一下不久好了么?比如改成255,不久可以输入0-255的数据,而其计数值也是按0-255计算的嘛。如下:
    3999.jpg
    4、修改后,调试发现可行。

    三、感想与收获:
    1、KSDK库还有一些不符合我们自己的要求,可以进行修改,这样比较省事的。
    2、读KSDK库,就是一个学习编程的机会。



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

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-26 23:03:32 | 显示全部楼层
    刚看还以为楼主发重了帖子,数字
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16873
    最后登录
    1970-1-1
     楼主| 发表于 2015-9-27 00:08:51 | 显示全部楼层
    JackieLaura 发表于 2015-9-26 23:03
    刚看还以为楼主发重了帖子,数字

    标题还没来的急改
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5788
    最后登录
    2025-5-7
    发表于 2015-9-27 10:14:32 | 显示全部楼层
    学习
    154120hhw0q0e0hpw374yw.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    64

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    314
    最后登录
    2016-11-18
    发表于 2015-11-23 16:44:15 | 显示全部楼层
    遇到了一个问题很纳闷,用FTM0_CH2输出一路PWM,可是总是没有波形,万用表测了一下,电压只有0.022V左右。随便加了一句    FTM_DRV_CounterStart(FTM2, kCounting_FTM_UP,0,1000,false);竟然电压变为1.4
    1. int main(void)
    2. {
    3.   
    4.   
    5.      uint8_t rxChar, txChar;
    6.     uint32_t byteCountBuff = 0;
    7.     uint32_t QuadCount,FTMCount,uartSourceClock,SystemClockFreq,BusClockFreq,FlashClock;
    8.    
    9.     // Initialize variable uartState of type uart_state_t
    10.     uart_state_t uartState;
    11.     bool brightnessUp = true;       /*! Indicate LED is brighter or dimmer*/

    12.     hardware_init();
    13.     OSA_Init();
    14.    GPIO_DRV_OutputPinInit(PTA13_PWM_OutConfig0);
    15.    
    16.    
    17.      // Initialize FTM module,
    18.     // configure for software trigger.
    19.     FTM_DRV_Init(BOARD_FTM_INSTANCE, &ftmInfo);
    20.    
    21.      uartSourceClock = CLOCK_SYS_GetUartFreq(BOARD_DEBUG_UART_INSTANCE);
    22.      PRINTF("\r\n uartSourceClock=%d  \r\n",uartSourceClock);   
    23.      
    24.       SystemClockFreq = CLOCK_SYS_GetSystemClockFreq();
    25.      PRINTF("\r\n  SystemClockFreq=%d  \r\n",SystemClockFreq);   
    26.      
    27.      BusClockFreq =CLOCK_SYS_GetBusClockFreq();
    28.      PRINTF("\r\n  BusClockFreq=%d \r\n",BusClockFreq);   
    29.      
    30.      FlashClock =CLOCK_SYS_GetFlashClockFreq();
    31.      PRINTF("\r\n  FlashClock=%d \r\n",FlashClock);   
    32.     PWM_enable;   //74f08PWM使能引脚控制   
    33.     FTM_DRV_CounterStart(BOARD_CAP_INSTANCE, kCounting_FTM_UP,0,1000,false);
    34.     FTM_DRV_CounterStart(BOARD_FTM_INSTANCE, kCounting_FTM_UP,0,1000,false);
    35.                      
    36.     FTM_DRV_SetClock(BOARD_FTM_INSTANCE, kClock_source_FTM_SystemClk, kFtmDividedBy1);   
    37.      // Start PWM mode with updated duty cycle.
    38.       FTM_DRV_PwmStart(BOARD_FTM_INSTANCE, &ftmParam, BOARD_FTM_CHANNEL);
    39.       
    40.              // Software trigger to update registers.
    41.       FTM_HAL_SetSoftwareTriggerCmd(g_ftmBase[BOARD_FTM_INSTANCE], true);
    复制代码

    v左右了,不过PWM还是没有出来。求指教,原因错在什么地方,我的电路没有问题,因为之前测出来过一次PWM,中间程序不知改动什么地方了,现在没有了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-11-29 11:30:08 | 显示全部楼层
    谢谢分享              
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-12 20:10 , Processed in 0.112936 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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