• 大小: 4.79MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-04
  • 语言: 其他
  • 标签:

资源简介

在stm32f10x板子上实现多线程,A,B线程相互调用,来测试线程的切换是否成功。

资源截图

代码片段和文件信息


/**
 * @ingroup BasicDef
 *
 * @def RT_ALIGN_DOWN(size align)
 * Return the down number of aligned at specified width. RT_ALIGN_DOWN(13 4)
 * would return 12.
 */
#define RT_ALIGN_DOWN(size align)      ((size) & ~((align) - 1))

unsigned long rt_interrupt_from_thread rt_interrupt_to_thread rt_thread_switch_interrupt_flag;

struct exception_stack_frame
{
    unsigned long r0;
    unsigned long r1;
    unsigned long r2;
    unsigned long r3;
    unsigned long r12;
    unsigned long lr;   //14
    unsigned long pc;   //15
    unsigned long psr;  //13
};

struct stack_frame
{
    /* r4 ~ r11 register */
    unsigned long r4;
    unsigned long r5;
    unsigned long r6;
    unsigned long r7;
    unsigned long r8;
    unsigned long r9;
    unsigned long r10;
    unsigned long r11;

    struct exception_stack_frame exception_stack_frame;
};

unsigned char *rt_hw_stack_init(void       *tentry
                             void       *parameter
                             unsigned char *stack_addr
                             void       *texit)
{
    struct stack_frame *stack_frame;
    unsigned char         *stk;
    unsigned long       i;

    stk  = stack_addr + sizeof(unsigned long);
    stk  = (unsigned char *)RT_ALIGN_DOWN((unsigned long)stk 8);
    stk -= sizeof(struct stack_frame);

    stack_frame = (struct stack_frame *)stk;

    /* init all register */
    for (i = 0; i < sizeof(struct stack_frame) / sizeof(unsigned long); i ++)
    {
        ((unsigned long *)stack_frame)[i] = 0xdeadbeef;
    }

    stack_frame->exception_stack_frame.r0  = (unsigned long)parameter; /* r0 : argument */
    stack_frame->exception_stack_frame.r1  = 0;                        /* r1 */
    stack_frame->exception_stack_frame.r2  = 0;                        /* r2 */
    stack_frame->exception_stack_frame.r3  = 0;                        /* r3 */
    stack_frame->exception_stack_frame.r12 = 0;                        /* r12 */
    stack_frame->exception_stack_frame.lr  = (unsigned long)texit;     /* lr */
    stack_frame->exception_stack_frame.pc  = (unsigned long)tentry;    /* entry point pc */
    stack_frame->exception_stack_frame.psr = 0x01000000L;              /* PSR */

    /* return task‘s current stack address */
    return stk;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         14  2019-05-10 11:25  RTT-Mini\.git\COMMIT_EDITMSG

     文件        157  2019-05-06 14:14  RTT-Mini\.git\config

     文件         73  2019-05-06 14:14  RTT-Mini\.git\description

     文件         31  2019-05-10 11:22  RTT-Mini\.git\HEAD

     文件        478  2019-05-06 14:14  RTT-Mini\.git\hooks\applypatch-msg.sample

     文件        896  2019-05-06 14:14  RTT-Mini\.git\hooks\commit-msg.sample

     文件        189  2019-05-06 14:14  RTT-Mini\.git\hooks\post-update.sample

     文件        424  2019-05-06 14:14  RTT-Mini\.git\hooks\pre-applypatch.sample

     文件       1642  2019-05-06 14:14  RTT-Mini\.git\hooks\pre-commit.sample

     文件       1348  2019-05-06 14:14  RTT-Mini\.git\hooks\pre-push.sample

     文件       4951  2019-05-06 14:14  RTT-Mini\.git\hooks\pre-rebase.sample

     文件       1239  2019-05-06 14:14  RTT-Mini\.git\hooks\prepare-commit-msg.sample

     文件       3611  2019-05-06 14:14  RTT-Mini\.git\hooks\update.sample

     文件      15252  2019-05-10 11:25  RTT-Mini\.git\index

     文件        240  2019-05-06 14:14  RTT-Mini\.git\info\exclude

     文件       1004  2019-05-10 11:25  RTT-Mini\.git\logs\HEAD

     文件        498  2019-05-10 11:25  RTT-Mini\.git\logs\refs\heads\context_switch

     文件        487  2019-05-10 11:21  RTT-Mini\.git\logs\refs\heads\master

     文件       3443  2019-05-06 14:16  RTT-Mini\.git\objects\02\9761adc57040e0b27053dccd2ec2ef09063671

     文件        152  2019-05-10 11:21  RTT-Mini\.git\objects\04\503fed1ac82c48ff86140afc1e3540a842c0ca

     文件        152  2019-05-10 11:20  RTT-Mini\.git\objects\05\abc4d0b7f230532ed1a929ca27b3d61ec04121

     文件       2841  2019-05-06 14:16  RTT-Mini\.git\objects\07\6aa7fe3ddc00894410c216bc97d79ff69136d6

     文件         45  2019-05-06 14:18  RTT-Mini\.git\objects\07\cac2c4b8f75949cf2b80df11f202598325dc2a

     文件       3097  2019-05-06 14:16  RTT-Mini\.git\objects\09\291a56caf058189d688be3b87e9f687d324b6d

     文件       3318  2019-05-06 14:16  RTT-Mini\.git\objects\0c\87160882f96af757dc5373b93d3f8b494e33ec

     文件        254  2019-05-06 14:18  RTT-Mini\.git\objects\10\05a6880ef27dfad2417a258997acc59e392792

     文件       5474  2019-05-06 14:16  RTT-Mini\.git\objects\11\49c34777ac24b415bf9cefbf80d11d9f0a7a7a

     文件       3386  2019-05-06 14:16  RTT-Mini\.git\objects\11\ccfe39e06eaf188d8ea02f1c3cc11c3dc6bf2a

     文件        923  2019-05-06 14:17  RTT-Mini\.git\objects\13\1ce32f8b07173cfb59d4136aa87b3a1bbd5601

     文件         17  2019-05-06 14:16  RTT-Mini\.git\objects\13\9597f9cb07c5d48bed18984ec4747f4b4f3438

............此处省略514个文件信息

评论

共有 条评论

相关资源