RT-Thread论坛
登录
直播中
倪山骋
7年用户
1016经验值
私信
关注
rt-thread如何实现与freertos相同的功能?
开启该帖子的消息推送
RT-Thread
FreeRTOS
我在一个项目中采用了 cortex m4 的内核,用于 pwm 控制电机,对定时器的实时性要求比较高,希望 rt-thread 在进行原子操作时不关闭 pwm 的定时器。
当前 rt-thread 的原子操作时开关总中断(如下代码),开关总中断影响 pwm 定时器中断响应
rt_hw_interrupt_disable PROC
EXPORT rt_hw_interrupt_disable
MRS r0, PRIMASK
CPSID I
BX LR
ENDP
;/*
; * void rt_hw_interrupt_enable(rt_base_t level);
; */
rt_hw_interrupt_enable PROC
EXPORT rt_hw_interrupt_enable
MSR PRIMASK, r0
BX LR
ENDP
在 freertos 中除开关总中断外,还有一个可关闭低于指定优先级的中断。这样可以保障指定优先级的性能,其实现如下,当然代价是指定优先级的中断不能调用 rtos 相关的接口。
portFORCE_INLINE sta
ti
c uint32_t ulPortRaiseBASEPRI( void )
{
uint32_t ulOriginalBASEPRI, ulNewBASEPRI;
__asm volatile
(
" mrs %0, basepri \n" \
" mov %1, %2 \n" \
" msr basepri, %1 \n" \
" isb \n" \
" dsb \n" \
:"=r" (ulOriginalBASEPRI), "=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
);
/* This return will not be reached but is necessary to prevent compiler
warnings. */
return ulOriginalBASEPRI;
}
/*-----------------------------------------------------------*/
portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue )
{
__asm volatile
(
" msr basepri, %0 " :: "r" ( ulNewMaskValue ) : "memory"
);
}
问题
rt-thread 如何实现与 freertos 相同的功能(只关闭低于指定优先级的中断),除了修改rt_hw_interrupt_disable、rt_hw_interrupt_enable,还有什么要注意的吗?
回帖
(1)
向芹
2024-2-22 15:35:03
1、可以参考FreeRTOS的开关中断方式,通过向basepri寄存器写入要屏蔽的中断号数值(大于这个数值的将会被屏蔽)
2、RTT 的开关中断方式就是简单粗暴,因为一般我们临界段的处理时间是比较短的,关了再开其实并没有太大的影响。
1、可以参考FreeRTOS的开关中断方式,通过向basepri寄存器写入要屏蔽的中断号数值(大于这个数值的将会被屏蔽)
2、RTT 的开关中断方式就是简单粗暴,因为一般我们临界段的处理时间是比较短的,关了再开其实并没有太大的影响。
举报
更多回帖
rotate(-90deg);
回复
相关问答
RT-Thread
FreeRTOS
请问
freertos
&
rt-thread
如何选择?
2020-08-02
4350
请问
RT-Thread
和
Freertos
哪个更适合学习开发使用呢?
2020-07-24
4134
如何利用
RT-Thread
Studio软件和CubeMX软件
实现
大疆A板的u***虚拟串口
功能
?
2022-02-11
582
liteos-a跟其他RTOS比如
freeRTOS
、
rt-thread
相比,有何不同?
2020-10-09
8076
RT-Thread
关键函数的
功能
有哪些
2021-11-29
1223
怎么在
RT-Thread
Studio 上使用
RT-Thread
Nano
2021-04-02
4297
RT-Thread
OneNET软件包的
功能
特点是什么?
2021-04-02
2920
RT-Thread
的架构有那几部分组成?
2021-03-29
1623
如何基于CubeMX移植
RT-Thread
Nano?
2021-03-29
2208
使用keil开发
RT-THread
的时候Use MicroLIB是否有用
2022-10-21
874
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分