OpenEdv-开源电子网

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

求助 请问在UCOSII系统中怎么使用各种中断?比如说外部中断.串口中断等

[复制链接]

18

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-1-13
在线时间
0 小时
发表于 2015-1-14 10:40:45 | 显示全部楼层 |阅读模式
5金钱
求助  请问在UCOSII系统中怎么使用各种中断?比如说外部中断.串口中断等

最佳答案

查看完整内容[请看2#楼]

和平时一样,多加两句话即可,参考我们的例子.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-1-14 10:40:46 | 显示全部楼层
和平时一样,多加两句话即可,参考我们的例子.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

18

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-1-13
在线时间
0 小时
 楼主| 发表于 2015-1-15 10:13:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
没发现那个例子里有啊    求原子哥发个   感激不尽啊
回复

使用道具 举报

18

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-1-13
在线时间
0 小时
 楼主| 发表于 2015-1-15 10:53:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
就是void EXTI0_1_IRQHandler (void) 
       {
       }
到底是怎么用的  ?  求解啊
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12989
金钱
12989
注册时间
2012-11-26
在线时间
3789 小时
发表于 2015-1-15 11:36:12 | 显示全部楼层
回复【4楼】遇见你:
---------------------------------
进入中断写一句  OSINTENTER  告诉OS进入中断了

退出中断写一句  OSINTEXIT     告诉OS退出中断了

其余跟裸机一样
学无止境
回复

使用道具 举报

18

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-1-13
在线时间
0 小时
 楼主| 发表于 2015-1-15 11:40:21 | 显示全部楼层
回复【5楼】jermy_z:
---------------------------------
void EXTI0_1_IRQHandler (void)  
       { 
      OSINTENTER;


      OSINTEXIT;
       } 
是这样吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-1-15 23:34:45 | 显示全部楼层
回复【6楼】遇见你:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2014-7-17
在线时间
21 小时
发表于 2015-12-14 20:07:00 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
請問中斷發生時CPU各寄存器的內容是如何被壓入用戶定義的“任務堆棧”而不是默認的堆棧中的?
此外Labrosse的《嵌入式實時操作系統》中說中斷時需要關中斷、將CPU寄存器的內容用彙編語言壓入用戶定義的堆棧、清中斷、再開中斷等步驟,這些又是如何實現的呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-12-14 22:23:24 | 显示全部楼层
回复【8楼】二十一畫生:
---------------------------------
这个我也不太清楚。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2014-7-17
在线时间
21 小时
发表于 2015-12-20 16:29:29 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
所以說,,,,原子哥你們提供的這個uCOS的中斷服務函數的解決方案並沒有考慮這些問題咯?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-12-20 23:11:20 | 显示全部楼层
回复【10楼】二十一畫生:
---------------------------------
我们例程不会有问题的。
这个你自己测试即可。
移植参考自官方的代码,我没有深入研究具体实现过程,你感兴趣可以自己移植。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-10-21
在线时间
7 小时
发表于 2016-1-22 15:12:31 | 显示全部楼层
正点原子 发表于 2015-1-15 23:34
回复【6楼】遇见你:
---------------------------------

void EXTI0_1_IRQHandler (void)   
       {  
       OSIntEnter();   
       

       OSIntExit();       
       }  
爱电子,爱科技,爱新技术
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-22
在线时间
5 小时
发表于 2016-7-22 11:29:39 | 显示全部楼层
这样会有一个问题,比如说是串口中断,如果中断及其频繁,会占用太多时间,导致系统任务无法运行,今早测试过串口,串口中断频繁,系统奔溃。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-6-16
在线时间
4 小时
发表于 2016-8-26 15:19:38 | 显示全部楼层
UCOS的实例中没有外部中断啊?ucos的实例就三个,分别是五十六,五十七,五十八三章。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-9-1
在线时间
5 小时
发表于 2019-1-8 18:38:26 | 显示全部楼层
其实是有的{
        u8 Res;
#ifdef SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
                {
                Res =USART_ReceiveData(USART1);//(USART1->DR);        //读取接收到的数据
               
                if((USART_RX_STA&0x8000)==0)//接收未完成
                        {
                        if(USART_RX_STA&0x4000)//接收到了0x0d
                                {
                                if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
                                else USART_RX_STA|=0x8000;        //接收完成了
                                }
                        else //还没收到0X0D
                                {       
                                if(Res==0x0d)USART_RX_STA|=0x4000;
                                else
                                        {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收          
                                        }                 
                                }
                        }                    
     }
#ifdef SYSTEM_SUPPORT_OS         
        OSIntExit();                                                                                           
#endif


在sys中的串口接受中断已经做了兼容,
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2019-1-25
在线时间
22 小时
发表于 2019-2-16 15:46:49 | 显示全部楼层
文宁 发表于 2016-7-22 11:29
这样会有一个问题,比如说是串口中断,如果中断及其频繁,会占用太多时间,导致系统任务无法运行,今早测试 ...

如果中断服务程序不需要发布任何信号或消息可以写成“无需内核参与的中断服务程序”
回复

使用道具 举报

1

主题

7

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1135
金钱
1135
注册时间
2022-3-27
在线时间
91 小时
发表于 2022-10-18 09:52:03 | 显示全部楼层
文宁 发表于 2016-7-22 11:29
这样会有一个问题,比如说是串口中断,如果中断及其频繁,会占用太多时间,导致系统任务无法运行,今早测试 ...

请问这种情况有什么好的解决办法吗?我用的400K的ADC,外部中断触发单片机采集,系统确实其他任务无法运行,只有中断处理函数一直执行。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 23:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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