关于FreeRTOS中FromISR的使用

本文探讨了FreeRTOS中带FromISR与不带FromISR函数的区别,解释了如何通过检查IPSR寄存器来判断当前是否处于中断状态,并提供了一个自定义函数OS_getOSSysTick的具体实现,用于根据不同情况调用正确的时钟节拍获取函数。

在使用FreeRTOS的过程中,我们会发现一个函数分为带FromISR和不带FromISR的。这也是FreeRTOS中一再强调的!!在中断中必须调用函数名以FromISR结尾的函数。

具体了解请看FreeRTOS学习笔记——中断与任务切换:https://www.sohu.com/a/253256697_774177,我就不复制转载了。

因此在我编写的代码中我会读取IPSR(中断程序状态寄存器)的值来判断当前是否处理中断状态。

    /* read out IPSR register*/
    register uint32_t __regIPSR          __ASM("ipsr");

例如:

xTaskGetTickCount (FromISR)用于获取系统当前运行的时钟节拍数。

/*
*********************************************************************************************************
*	函 数 名: OS_getOSSysTick
*	功能说明: returns OS based system tick value.
*	形    参: 无
*	返 回 值: time stamp in ms, based on the OS time
*********************************************************************************************************
*/
uint32_t 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值