luoyiming1984 发表于 2010-9-9 15:26:15

OSIntEnter和OSIntExit可否这样用?

ucos就是靠中断中执行这两个函数,然后在退出中断后自动切换任务吧?如果某个中断发生的频率很快,可不可以不用这两个函数?还有一个问题,如果一个中断向量对应多个中断标准,比如STM32的串口中断中发完,收完,校验出错。可不可以通过判断标志位来执行这两个函数,这样可以做到串口发的时候不切换任务,收的时候才切任务。

liguangqang 发表于 2010-9-9 15:33:40

首先这两个函数是通知内核进入临界状态和退出临界状态。也意未其它中断和高优先极任务不能打入进来。退出中断后通过任务调度函数查找到最高优先级并运行。中断频率快慢不影响使用这两个函数。这两个函数只有上面的功能,和其它无关。

liguangqang 发表于 2010-9-9 15:40:20

高优先级的任务完成后要自行释放CPU使用权,所以每个任务最好做的事情少速度要快实时性就高。

STM8L103 发表于 2010-9-9 18:02:50

楼主都用STM32了啊。

CC1110很痛苦。

A-smith 发表于 2010-9-9 22:52:56

就算是115200波特率的串口 fifo16 一秒中断也没有多少次 完全没必要为了节省这个时间去改 UC/OS 内核

况且你的程序不可能一秒内串口不停歇一直首发吧


1 OSIntEnter 实际上就是来统计中断嵌套层数的 占用时间非常短

2 OSIntExit只有在退出最后一层中断时候 并且OSLockNesting 也为0的时候才会做出是否切换任务的判断

3 串口中断发送的时候一般也不会引起任务切换除非你在发送任务里还激活了其他任务
页: [1]
查看完整版本: OSIntEnter和OSIntExit可否这样用?