查看: 3718|回复: 4

[MQX] K64 mqx时序实现

[复制链接]
  • TA的每日心情

    2019-9-17 13:22
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    30

    主题

    905

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    2251
    最后登录
    2024-10-8
    发表于 2015-12-28 19:42:37 | 显示全部楼层 |阅读模式
    本帖最后由 very333 于 2015-12-28 19:43 编辑

    想在k64 MQX的环境下实现如下时序

    10ms用回调函数实现,
    #define HWTIMER2_PERIOD     10000

    void hwtimer_task
    {
        lwgpio_set_pin_output(BSP_PTE24,LWGPIO_VALUE_LOW);
        hwtimer_set_period(&hwtimer2, BSP_HWTIMER2_SOURCE_CLK, HWTIMER2_PERIOD);
        hwtimer_callback_reg(&hwtimer2,(HWTIMER_CALLBACK_FPTR)hwtimer2_callback, NULL);
    }


    void hwtimer2_callback(pointer p)
    {
          lwgpio_set_pin_output(BSP_PTE24,LWGPIO_VALUE_LOW);
          想在此处加入0.32ms延时
          lwgpio_set_pin_output(BSP_PTE24,LWGPIO_VALUE_HIGH);
    }
    请问这个0.32ms延时怎样能够实现



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

    时序

    时序
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-28 12:41
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    280

    帖子

    0

    高级会员

    Rank: 4

    积分
    802
    最后登录
    2021-9-5
    发表于 2015-12-29 08:41:55 | 显示全部楼层
    可以用延时做,也可以自己配置定时器0.01ms
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-12-29 13:27:11 | 显示全部楼层
    楼主你好!已经帮你转给我们的MQX工程师,他会帮你解答,还请耐心等待下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    196

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    380
    最后登录
    1970-1-1
    发表于 2015-12-30 12:56:12 | 显示全部楼层
    楼主可以看下 twrk64f120m.h

    /* HWTIMER definitions for user applications */
    #define BSP_HWTIMER1_DEV        pit_devif
    #define BSP_HWTIMER1_SOURCE_CLK (CM_CLOCK_SOURCE_BUS)
    #define BSP_HWTIMER1_ID         (0)

    #define BSP_HWTIMER2_DEV        lpt_devif
    #define BSP_HWTIMER2_SOURCE_CLK (CM_CLOCK_SOURCE_LPO)
    #define BSP_HWTIMER2_ID         (0)

    #define BSP_HWTIMER_LPT0_DEFAULT_PCSCLK     (1)

    这里是关于HWTIMER的设置。
    当你使用精度要求不高时, 使用的是low power timer,   lpt_devif.
    当你需要精度高时, 可以使用 pit_devif.

    他们是用hwtimer_init 这个函数来初始化的。
    详情请参考下面的demo
    C:\Freescale\Freescale_MQX_4_2\mqx\examples\hwtimer\build\iar\hwtimer_twrk64f120m
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-9-17 13:22
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    30

    主题

    905

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    2251
    最后登录
    2024-10-8
     楼主| 发表于 2016-1-7 14:27:25 | 显示全部楼层
    FSL_TICS_DANIEL 发表于 2015-12-30 12:56
    楼主可以看下 twrk64f120m.h

    /* HWTIMER definitions for user applications */

    感谢FAE的回答,这几天没空上论坛,将我的解决方案公布。
    1 设置两个回调函数的周期
    #define HWTIMER2_PERIOD     10000
    #define HWTIMER1_PERIOD     320

    2.定义两个回调函数的定义
    void hwtimer1_callback(pointer p)
    {
       lwgpio_set_pin_output(BSP_PTE24,LWGPIO_VALUE_HIGH);
    }

    void hwtimer2_callback(pointer p)
    {
           lwgpio_set_pin_output(BSP_PTE24,LWGPIO_VALUE_LOW);
           hwtimer_set_period(&hwtimer1, BSP_HWTIMER1_SOURCE_CLK, HWTIMER1_PERIOD);
           hwtimer_callback_reg(&hwtimer1,(HWTIMER_CALLBACK_FPTR)hwtimer1_callback, NULL);
        /* Waiting for semaphore from callback routine */
        hwtimer_start(&hwtimer1);
          _lwsem_wait(&job_done);
        /* Deinitialization of hwtimers */
        _lwsem_destroy(&job_done);
    }

    3.主TASK调用hwtimer_callback_reg(&hwtimer2,即可。

    先前我只是试了一下,看过FAE的答复,明白了HWTIMER1与HWTIMER2的精度要求是不同的,FAE能否再解释下low power timer,lpt_devif.pit_devif.这三者的精度范围呢。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 22:11 , Processed in 0.094795 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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