FreeRTOS--基于Cortex-M3 架构中--三个异常:SVC、PendSV 和 SysTick

        在Cortex-M3架构中,FreeRTOS操作系统利用SVC、PendSV和SysTick三个异常来实现任务启动和任务切换。

 1.SVC(系统服务调用)

        SVC异常用于任务启动。在某些操作系统中,应用程序不允许直接访问硬件,而是通过系统服务函数来间接实现。当应用程序需要调用这些系统服务函数时,它会触发SVC异常。这样,操作系统就可以通过SVC异常处理程序来执行相应的服务,从而间接地访问硬件。

2.PendSV(可挂起系统调用): 


        PendSV异常用于完成任务切换。它具有可挂起的特点,即如果当前有优先级更高的中断在运行,PendSV会等待高优先级中断执行完毕后再执行。这种特性确保了任务切换不会打断其他重要的中断服务程序,从而提高了系统的稳定性和响应性。在FreeRTOS中,PendSV异常的优先级被设置为最低,以确保任务切换不会干扰中断服务程序的执行。

3.SysTick


        SysTick是一个硬件定时器,用于产生系统节拍时钟。在FreeRTOS中,SysTick中断用于实现时间片轮转调度。如果多个任务共享同一个优先级,则每次SysTick中断发生时,下一个任务将获得一个时间片。尽管SysTick中断的优先级也被设置为最低,但这并不会影响系统时间的准确性。因为SysTick是硬件定时器,它一直在计时,无论系统是否响应SysTick中断,SysTick的溢出时间间隔都是固定的。因此,即使SysTick中断被延迟响应,也不会导致系统时间出现偏差。

4.总结: 

        FreeRTOS通过巧妙地利用SVC、PendSV和SysTick三个异常,实现了任务启动和任务切换的高效管理。同时,通过将PendSV和SysTick异常的优先级设置为最低,确保了任务切换不会打断中断服务程序的执行,从而提高了系统的稳定性和响应性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值