查看: 3143|回复: 1

[MQX] 请教关于MQX Lwtimer的问题(已解决)

[复制链接]

该用户从未签到

6

主题

45

帖子

0

注册会员

Rank: 2

积分
154
最后登录
2021-12-2
发表于 2013-6-8 09:43:09 | 显示全部楼层 |阅读模式
请教关于MQX lwtimer的问题
                        
            各位朋友,在下在一块K60板子上用lwtimer定时器时,发现如果用编译Freescale官方的MQX库时,lwtimer定时器正常工作,能正常打印出 “Timer LED On”和“Timer LED Off”。但是用我们自己裁剪配置的MQX时,lwtimer使用不正常。如果在LED_Task()中使用time_delay(150),则2个定时器都不正常,即一个数据都打印不出来,如果在LED_task()中使用_task_block(),则能打印出“Timer LED Off”。
            我现在想问的是两个问题,lwtimer这个定时器和MQX的配置裁剪有关吗?据我所知似乎么没有啊。
            为什么选择LED_Task中用time_delay(150)和_task_block会是不同的结果?其中原因到底是什么?
            我自认为我的程序没问题,请各位朋友给我提出意见。另外我也是初次接触RTOS,很多概念不是很熟,请大家帮我指点迷津。先谢谢了!!!!!
             
             
            所使用相关程序附在下面
             
            static void led_on(pointer ptr)
            {
               printf("\nTimer LED On");
            }
             
            
            static void led_off(pointer ptr)
            {
               printf("\nTimer LED Off");
            }
            static void CtlStartLwTimer(void)
            {
              LWTIMER_STRUCT lst_on;
              LWTIMER_STRUCT lst_off;
              LWTIMER_STRUCT lst_led;
              _mqx_uint result;
              _mqx_uint wait_ticks = 0;
             
              result=_lwtimer_create_periodic_queue(&ps, 6, wait_ticks);
              if(MQX_OK == result)
              {
                printf("\nCreate Periodic Queue OK");
              }
             
             result= _lwtimer_add_timer_to_queue(&ps, &lst_on, 3, led_on, 0);
              if(MQX_OK == result)
              {
                printf("\nAdd Timer 1 to Queue OK");
              }
             
              result=_lwtimer_add_timer_to_queue(&ps, &lst_off, 3, led_off, 0);
              if(MQX_OK == result)
              {
                printf("\nAdd Timer 2 to Queue OK");
              }
            }
            static void CtlStopLwTimer(void)
            {
               _mqx_uint result;
               result =_lwtimer_cancel_period(&ps);
            }
            
             
            void CtlGetLEDMsg(T_U32 mask)
            {
              CtlLEDStatusInfo(data);
            }
            void led_task(T_U32 initial_data)
            {
                T_U32 result;  
                T_U32 mask;
               
               
               while (1)
                {
                    printf("Led Task running\n");
                    /*set task LED event bit*/
                    {
                      //mask = _lwevent_get_signalled();
                      mask=0x04;
                      CtlGetLEDMsg(mask);
                    }
                   
                    _time_delay(150);
                    //_task_block();
                  
             
            
            
            
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

1

主题

178

帖子

0

高级会员

Rank: 4

积分
825
最后登录
1970-1-1
发表于 2013-6-9 13:55:56 | 显示全部楼层

RE:请教关于MQX Lwtimer的问题(正解)

你在修改过MQX编译配置后,有没有把MQX下面的例程再测试一遍?如果例程都不能跑,那可能就是配置的问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-22 20:25 , Processed in 0.085088 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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