UCOS--0

文章目录

报文切换

1. 异常与中断

Cortex‐M3 支持大量异常,包括 16‐4‐1=11 个系统异常,和最多 240 个外部中断——简称 IRQ。具体使用了这 240 个中断源中的多少个,则由芯片制造商决定。由外设产生的中断信号,除了 SysTick 的之外,全都连接到 NVIC 的中断输入信号线。典型情况下,处理器一般支持 16 到32 个中断,当然也有在此之外的。 作为中断功能的强化,NVIC 还有一条 NMI 输入信号线。NMI 究竟被拿去做什么,还要视处理器的设计而定。在多数情况下,NMI 会被连接到一个看门狗定时器,有时也会是电压监视功能块,以便在电压掉至危险级别后警告处理器。NMI 可以在任何时间被激活,甚至是在处理器刚刚复位之后。 表 3.4 列出了 Cortex‐M3 可以支持的所有异常。有一定数量的系统异常是用于 fault 处理的,它们可以由多种错误条件引发。NVIC 还提供了一些 fault 状态寄存器,以便于 fault 服务例程找出导致异常的具体原因。
由上述CM-3手册可以看出 中断是异常的子集 异常和中断都是硬件支持的. 所有能打断正常事件执行的都是异常。
  1. 中断与悬起
    当中断输入脚被assert(确认有效?)后,该中断就被悬起。即使后来中断源取消了中断请求,已经被标记成悬起的中断也被记录下来。到了系统中它的优先级最高的时候,就会得到响应 但是,如果在某个中断得到响应之前,其悬起状态被清除了(例如,在 PRIMASK 或FAULTMASK 置位的时候软件清除了悬起状态标志),则中断被取消。 当某中断的服务例程开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除。

1.中断输入引脚有效后,中断就被悬起,即使取消请求,也会执行。
2.中断是否处于悬起状态,中断请求被响应的关键。
3.中断响应之前,请求以脉冲方式呈现的话,仅看做一次请求(悬起不被软件清除的前提下)。
区别以前的51核异常流程有一个中间状态来作为缓期执行中间态自动保存但是人为可清理。但是SVC异常的话需要立即得到处理如果因为优先级低的话则会造成fault 错误用于RTOS的报文切换PENDSV异常跟普通中断是一样的他可以悬起。
在这里插入图片描述
在这里插入图片描述

1. 任务 A 呼叫 SVC 来请求任务切换(例如,等待某些工作完成)
2. OS 接收到请求,做好上下文切换的准备,并且 pend 一个 PendSV 异常
3. 当 CPU 退出 SVC 后,它立即进入 PendSV,从而执行上下文切换
4. 当 PendSV 执行完毕后,将返回到任务 B,同时进入线程模式。
5. 发生了一个中断,并且中断服务程序开始执行
6. 在 ISR 执行过程中,发生 SysTick 异常,并且抢占了该 ISR。
7. OS 执行必要的操作,然后 pend 起 PendSV 异常以作好上下文切换的准备。
8. 当 SysTick 退出后,回到先前被抢占的 ISR 中,ISR 继续执行
9. ISR 执行完毕并退出后,PendSV 服务例程开始执行,并且在里面执行上下文切换
10. 当 PendSV 执行完毕后,回到任务 A,同时系统再次进入线程模式。

3.使用了SVC+pendsv区别普通的中断开辟的栈空间处理方式有所不同使得RTOS的实现。
4.事件应该包含了中断事件和普通任务事件
5.摘抄于:STM32的异常.中断.事件区别和理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
说 明:本例程是基于STM32_V3.4固件函数库的uCOSII网络通讯实例,在MDK4.12中编译通过。(版本V1.0) 操作过程:1、打开APP文件夹的MDK工程文件,编译后下载到开发板; 2、打开“串口调试程序”,选择串口1,波特率9600,打开串口; 3、打开网络调试助手,设置主机IP地址为192.168.0.0~255网段,设置本地通信端口为1004,设置目标IP地址为192.168.0.100端口为2004: 4、在网络调试助手发送框输入"sky:c=1"点击发送,进行网络连接,连接成功调试助手会连续收到网络数据。 5、默认每秒发送一个数据包。网络调试助手发送框输入"sky:c=0"发送,暂停发送。网络调试助手发送框输入"sky:c=?"发送,恢复发送。 6、串口每秒发送一串字符,串口助手发送任意字符重新初始化网卡芯片。 7、可以使用ping 192.168.0.100进行验证IP应答,输入arp -a验证地址应答。 8、网卡芯片为enc28j60,使用中断方式接收,具体引脚定义请看程序。 9、接收任务挂起,接收中断函数中将接收任务恢复读取数据包。 本例程由微芯简易协议修改而来,添加了UDP主动发送函数,并在uCOSII系统下运行。 该版本更改了任务堆栈,添加了网卡芯片检测函数监控网卡状态如果出错则重新初始化网卡芯片,做了网卡芯片临界资源保护。该版本网络收发稳定性有了较大提高,并且对函数进行了封装,只需添加文件和路径即可移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值