mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-02-05 19:39:42 +08:00
@@ -282,24 +282,22 @@ MCU的核心价值在于中断的使用,实现对紧急事件的及时响应
|
||||
首先,用户需定义全局变量的副本,并按照指定方式来更新副本。中断中读全局变量时,<br>
|
||||
需调用 iWhichGVarToRead 来询问:应该读哪一个全局变量?返回0读正本,返回1读副本。<br>
|
||||
|
||||
* 用户中断中接收邮件
|
||||
* 用户中断中接收邮件 <br>
|
||||
重入访问:如果邮箱正在被写入,仍可成功接收邮件(将读取写入过程所读取的局部邮箱)。<br>
|
||||
互斥访问:如果邮箱正在被写入,将返回失败(false)。<br>
|
||||
|
||||
* 用户中断中接收消息
|
||||
* 用户中断中接收消息 <br>
|
||||
互斥访问:如果队列正在被访问,将返回失败(NULL)。<br>
|
||||
|
||||
### 中断挂起服务缓存队列(PendSV_FIFO)
|
||||
CosyOS-II 中断挂起服务缓存队列,已实现所有内核的MCU均为先入先出队列(FIFO)。
|
||||
中断挂起服务缓存队列,有必要先入先出吗?答案是确定的,原因在于当中断并发时,服务
|
||||
的执行顺序要符合“不同中断间可能存在的”和“同一个中断中必然存在的”提请服务的时
|
||||
序逻辑关系。
|
||||
再有,“入队列”与“出队列”的过程必须是原子操作,操作流不能被打断。
|
||||
### 中断挂起服务缓存
|
||||
CosyOS-II 中断挂起服务缓存队列,已实现所有内核的MCU均为先入先出队列(FIFO)。<br>
|
||||
中断挂起服务缓存队列,有必要先入先出吗?答案是确定的,原因在于当中断并发时,服务的执行顺序要符合“不同中断间可能存在的”和“同一个中断中必然存在的”提请服务的时序逻辑关系。再有,“入队列”与“出队列”的过程必须是原子操作,操作流不能被打断。<br>
|
||||
|
||||
### 中断
|
||||
为实现零中断延迟,用户中断应尽量避免使用最低优先级。
|
||||
用户中断应遵循快进快出的原则,仅执行最为紧急的工作,而把可以稍缓的工作转为在任务中执行(中断服务任务)。
|
||||
用户中断的最大执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行。
|
||||
### 中断使用注意事项
|
||||
* 在CosyOS中,中断是系统脱管的,对中断的使用与裸机编程是一样的。<br>
|
||||
* 只要用户中断不是最低优先级,就可实现零中断延迟。其实,即使是最低优先级,也是零中断延迟的,只不过系统中断可能会与其抢占。所以用户中断还是尽量避免使用最低优先级。<br>
|
||||
* 用户中断应遵循快进快出的原则,仅对事件做紧急处理,而把可以稍缓的工作转为在任务中执行(中断服务任务)。<br>
|
||||
* 用户中断的最大执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行。<br>
|
||||
|
||||
## 第三章、线程同步
|
||||
|
||||
|
||||
Reference in New Issue
Block a user