如何在FreeRTOS的Windows模拟器上模拟中断

vPortGenerateSimulatedInterrupt函数用于设置和触发模拟中断,而vPortSetInterruptHandler用于安装中断处理程序。中断号0和1被系统占用,用户可模拟3~31号中断,最多29个。中断处理程序的返回值至关重要,若需切换上下文,应返回pdTRUE,以便在中断后调度高优先级任务。
摘要由CSDN通过智能技术生成

vPortGenerateSimulatedInterrupt()

设置要产生的中断,并触发模拟中断服务例程

vPortSetInterruptHandler()

安装模拟中断服务例程的处理程序

  1. void vPortGenerateSimulatedInterrupt( uint32_t ulInterruptNumber )

其中ulInterruptNumber是要模拟的中断号,0号被YIELD中断占用,1号被TICK中断占用,2号被用于终止已删除的FreeRTOS任务的Windows线程,所以只能设置为3~31,一共可以模拟29个中断。

  1. void vPortSetInterruptHandler( uint32_t ulInterruptNumber, uint32_t (*pvHandler)( void ) )

pvHandler应指向要安装的断号的处中理程序函数。

特别要注意中断处理程序pvHandler函数的返回值,如果需要请求切换上下文,应该返回pdTRUE。

这是因为当一个低优先级的任务被中断打断后,如果在该中断服务例程执行过程中完成了某事件,并触发了另一个更高优先级的任务。此时,从中断服务例程切出后肯定希望调度高优先级的就绪任务。这就要求做上下文切换(低优先级的任务--->高优先级的就绪任务)。

参考:A free FreeRTOS simulator or emulator that runs in Windows and uses Visual Studio or Eclipse and MingW as its compiler and IDE Defining and Using Simulated Interrupt Service Routines

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值