硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2986|回复: 0
收起左侧

[ThreadX全家桶] ThreadX的中断级任务切换和任务级任务切换问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2020-6-6 10:24:08 | 显示全部楼层 |阅读模式


任务级的任务切换比较好理解,就是通过Delay等挂起类API就可以实现任务切换。


中断级任务切换,花了点时间简单研究了下代码,他是通过下面这条关键语句实现:

*((ULONG *) 0xE000ED04) = ((ULONG) 0x10000000);的作用就是使能PendSV中断。

  1. __attribute__( ( always_inline ) ) static inline void _tx_thread_system_return_inline(void)
  2. {
  3. unsigned int interrupt_save;

  4.     *((ULONG *) 0xE000ED04) = ((ULONG) 0x10000000);
  5.     if (__get_ipsr_value() == 0)
  6.     {
  7.         interrupt_save = __get_primask_value();
  8.         __enable_interrupts();
  9.         __restore_interrupts(interrupt_save);
  10.     }   
  11. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 22:29 , Processed in 0.255702 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表