这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 取数据中止求助

共2条 1/1 1 跳转至

取数据中止求助

院士
2006-09-17 18:14:16     打赏
取数据中止求助



关键词: 数据     中止     求助    

院士
2006-12-22 22:43:00     打赏
2楼
问 运行一个程序,要用到文件和UART,当我在程序中加入
c=UART0Getch() 或  
cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);
语句时就出现了取数据中止问题。这样UART就没有工作起来,请问这是怎么回事啊,是不是要改某些参数? 1: re;1. 要正确配置OS_CFG.H文件中的OS_MAX_EVENTS值。
2. 使用Uart0ReviceMbox之前要使用OSMboxCreate创建消息邮箱。 2: 继续取数据中止求助OS_MAX_EVENTS我设为了20,是不是太大了
Uart0ReviceMbox我也已经用OSMboxCreate创建了,并创建成功了。
不过还是存在取数据中止的问题!
怎么办才好呢? 3: 继续取数据中止求助问题还是没有解决,大家帮忙啊? 4: 参数应该是参数err的问题,查一下是不是参数的问题!! 5: 继续取数据中止求助参数err有什么问题吗?
我在程序中是这样定义err的: uint8 err  
原程序是这样的,大家帮我看看,很简单的,不会浪费大家太多时间:
#include "config.h"
OS_STK        TaskStk[TaskSize];
OS_STK        TaskStartStk[TaskSize];
OS_STK        TaskUart0Stk[TaskSize];
OS_EVENT *Uart0ReviceMbox;
void  TaskStart (void *pdata);
void  TaskUart0Revice(void *data);       

int main(void)
{
    OSInit();
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TaskSize-1], 3);
    OSTaskCreate(OSFileTask, (void *)0, &TaskStk[TaskSize-1],1);
    OSStart();
    return 0;
}

char *FileName = "a:\\单片机3.txt";
char WritFileData[]="1234567891234567890";
char  ReadFileData[10];
    void  TaskStart (void *pdata)
{
   
    uint8 buff[10],i,*cp,err;
    HANDLE FHandle,Handle;

    pdata = pdata;
     Uart0ReviceMbox = OSMboxCreate(NULL);                           /* 建立邮箱     */
   
    if (Uart0ReviceMbox == NULL)
    {
        while (1);
    }
    
       TargetInit();
  
   OSTaskCreate(TaskUart0Revice, (void *)0,
                 &TaskUart0Stk[TaskSize - 1], 7);   

     
    OSAddFileDriver(CFCammand);            /*增加ATA设备0*/
    
    for (;;)
    {
    cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);
    FHandle = OSFileOpen(FileName, "rw");
    OSFileSeek(FHandle,0, SEEK_END);
    OSFileWrite(WritFileData, sizeof(WritFileData), FHandle);         Handle = OSFileOpen(FileName, "r");
    OSFileRead(ReadFileData,10,Handle);
    for(i=0;i<10;i++)
      buff[i]=(uint8) ReadFileData[i];
    UART0Write(buff,10);   
     OSFileClose(FHandle);
    OSAllCacheWriteBack();
    OSRemoveFileDriver(0);  }
}

//串口接收任务
        void  TaskUart0Revice(void *pdata)
{ 省略}

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]