OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2382|回复: 2

UCOSIII的串口通信无法实现

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2022-7-19
在线时间
8 小时
发表于 2022-7-28 15:31:49 | 显示全部楼层 |阅读模式
1金钱
       想实现的功能是:任务1通过串口控制LED0灯的亮灭,任务2是LED1灯闪烁,如果任务1放延时函数OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms,一开始任务2能正常运行,可是一旦通过串口发送数据,任务2就停止运行,且任务1也无法运行,接收不到数据;可如果任务1删除延时函数OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms,,任务1和任务2都无法运行,这是什么情况啊???求大佬们解惑!!!!!
//Task1任务函数
void Task1_task(void *p_arg)
{
        u8 ch;
        OS_ERR err;
        p_arg = p_arg;       
        while(1)
        {
                ch=USART_ReceiveData(USART1);        //读取接收到的数据
                switch(ch)
                {
                  case 'a'ED0=0;printf("关闭LED0\r\n");break;
                  case 'b'ED0=1;printf("打开LED0\r\n");break;
                }                 
        OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms
        }
}
       
//Task2任务函数
void Task2_task(void *p_arg)
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
          LED1=~LED1;
          OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2022-7-19
在线时间
8 小时
 楼主| 发表于 2022-7-28 15:47:00 | 显示全部楼层
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms,我知道这个函数可以用来任务调度,可是我直接替换成任务调度函数OSSched(),依然任务1和任务2都无法实现。
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2022-6-27
在线时间
8 小时
发表于 2022-8-3 11:20:46 | 显示全部楼层
本帖最后由 yaowan 于 2022-8-5 11:47 编辑

ch=USART_ReceiveData(USART1);     这个函数貌似不能这么直接调用, 在相应的串口中断函数USARTx_IRQHandler()中才能使用,否则怎么输出都是空的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-11 09:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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