3425|4

35

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求解:ucos下,关于TFT6758显示和蜂鸣器任务 [复制链接]

 在ucos操作系统下,利用ZLGGUI和TFT6758在smartarm2200上做个实验,总共建立了两个任务:汉字显示和蜂鸣器响。main函数如下:
int main (void)
{  GUI_Initialize();      // 初始化液晶
    GUI_SetColor(WHITE, NAVY);   // 设置液晶背景和显示字颜色
    OSInit ();                          
    OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);  
    OSStart ();
    return 0;               
}
void Task0(void *pdata)
{  
pdata = pdata;
TargetInit ();

// PINSEL0 = 0x00000000;  // 设置P0口管脚连接GPIO  
// IO0DIR = BEEP;             // 设置蜂鸣器控制口为输出
//    IO0SET = BEEP;
// IO2DIR = LED_IOCON;         // 设置LED1--LED4的控制口为输出
//    LED_OFF();
    // 建立任务1(用于蜂鸣器控制)
OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);

while (1)
{   
      GUI_ClearSCR();
      HzDisp2();     //显示汉字“欢迎光临”
   //   DelayNS(50);
   
// IO0CLR = BEEP;  // 控制蜂鸣器响
       OSTimeDly(OS_TICKS_PER_SEC);
         
  //      IO0SET = BEEP;
         
}
}
  
void Task1(void *pdata)
{
pdata = pdata;

while (1)
{   

      OSTimeDly(OS_TICKS_PER_SEC*3);     // 延时3S
      GUI_ClearSCR();
      HzDisp();//显示汉字“请稍等”
     // DelayNS(50);
/*  IO0CLR = BEEP;  // 控制蜂鸣器响
        OSTimeDly(OS_TICKS_PER_SEC);
        IO0SET = BEEP;  */
      

        OSTimeDly(OS_TICKS_PER_SEC); // 延时1S
      
}
}  
      上面的函数能够正常显示汉字。
    现在我把task1中的显示汉字功能关闭,进而改用蜂鸣器任务时。液晶上开始显示三次“欢迎光临”后,蜂鸣器响,再往后液晶上就没有显示了,而蜂鸣器任务能够正常运行。小弟找了半天也发现不了问题,哪位大侠帮忙解释一下呢?谢谢

最新回复

持续关注,期待解决, 我继续研究下。  详情 回复 发表于 2012-3-21 22:19
点赞 关注
 

回复
举报

10

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
先把代码贴上,先说一下啊,写代码起码缩进吧。
你加上蜂鸣器后的代码是不是这样的?
int main (void)
{
        GUI_Initialize(); // 初始化液晶
        GUI_SetColor(WHITE, NAVY); // 设置液晶背景和显示字颜色
        OSInit ();
        OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);
        OSStart ();
        return 0;
}
void Task0(void *pdata)
{
        pdata = pdata;
       
        TargetInit ();
        // PINSEL0 = 0x00000000; // 设置P0口管脚连接GPIO
        // IO0DIR = BEEP; // 设置蜂鸣器控制口为输出
        // IO0SET = BEEP;
        // IO2DIR = LED_IOCON; // 设置LED1--LED4的控制口为输出
        // LED_OFF();
        // 建立任务1(用于蜂鸣器控制)
        OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);

        while (1)
        {
                GUI_ClearSCR();
                HzDisp2(); //显示汉字“欢迎光临”
                // DelayNS(50);
                // IO0CLR = BEEP; // 控制蜂鸣器响
                OSTimeDly(OS_TICKS_PER_SEC);
                // IO0SET = BEEP;
        }
}

void Task1(void *pdata)
{
        pdata = pdata;
       
        while (1)
        {
                OSTimeDly(OS_TICKS_PER_SEC*3); // 延时3S
                GUI_ClearSCR();
                //HzDisp();//显示汉字“请稍等”
                // DelayNS(50);
                IO0CLR = BEEP; // 控制蜂鸣器响
                OSTimeDly(OS_TICKS_PER_SEC);
                IO0SET = BEEP;
                OSTimeDly(OS_TICKS_PER_SEC); // 延时1S
        }
}
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
额,我失误, 这论坛不提供代码编辑器,蛋疼,我觉得原因可能是task1中的这一句
GUI_ClearSCR();
没有注释掉,这样来个任务来回切换,显示的时间是非常短的,最后总是被清屏了。
不知道是不是这个原因,你试下看看。
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 MCUPrince 的帖子

感谢MCUPrince的回复,蜂鸣器的任务时我是删除了GUI_ClearSCR();的,不行啊~~
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

5
 
持续关注,期待解决, 我继续研究下。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表