OpenEdv-开源电子网

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

uC/OS中串口接收中断的问题

[复制链接]

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2013-8-13 13:41:30 | 显示全部楼层 |阅读模式
    在uC/OS中,串口中断接收该如何实现?
    我把串口接收中断服务函数作为一个Task,对串口状态寄存器进行扫描,
看是否收到数据,但是读不到...
######################################################
void TaskUsart1(void *pdata)                 //串口1中断服务程序
{
u8 Res=0x31;
OS_ENTER_CRITICAL(); //关中断,将接收数据作为临界段
while(1)
{
if(USART1->SR&(1<<5))//接收到数据   //USART1->SR是串口状态寄存器,检测RXNE
{
Res =USART_ReceiveData(USART1);//(USART1->DR);//读取接收到的数据 ,读取不到  
        }  
USART_SendData(USART1,Res);//把接收到的数据发送回去
OS_EXIT_CRITICAL(); //开中断,退出临界段
OSTimeDlyHMSM(0,0,0,10);//延时,参数:时,分,秒,微秒
}

######################################################
uC/OS怎样处理外部中断或者串口接收中断这一类不确定中断?
望指导,谢谢



博观而约取,厚积而薄发。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 14:02:53 | 显示全部楼层
回复【楼主位】745021926:
---------------------------------
你直接用串口中断就好了啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
 楼主| 发表于 2013-8-13 14:07:33 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
OK,搞定了...直接把USART中断分组改为0,0

不愧是原子哥
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
 楼主| 发表于 2013-8-13 14:09:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那外部中断也是采用这种方法么?  

请问,我们在uC/OS中设置的任务优先级
#define LED_TASK_Prio       9
#define USART1_TASK_Prio    6
#define KEY_TASK_Prio       7
#define LED1_TASK_Prio      8
#define START_TASK_Prio     10

在NVIC_PriorityGroup中是如何计算的?
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 14:19:01 | 显示全部楼层
回复【4楼】745021926:
---------------------------------
中断和UCOSII不干扰的。。。
ucosii一般用systick切换任务,那么systick我们一般用默认的优先级,低于所有中断的优先级,所以一旦有stm32自身的中断来到,直接就把ucosii的任务给打断了(不管你这个任务的UCOSII优先级多高,都会被打断),处理完中断后,才接着处理ucosii的任务。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
 楼主| 发表于 2013-8-13 14:47:42 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
明白了,谢谢原子解答!
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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