共2条
1/1 1 跳转至页
问
运行一个程序,要用到文件和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)
{ 省略}
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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |