RT-Thread
那可真是太开心了呢
一个十分菜的程序媛
展开
-
【RT-Thread】 临界段的保护
临界段就是在执行不能被打断的代码段,最常见的就是对全局变量进行操作,临界段在系统调度和外部中断的时候会被打断。在RT-Thread中,系统调度最终也是产生PendSV中断,在PendSV里面实现线程的切换,所以对于RT-thread临界段的保护变成了把中断都关闭,NMIFAULT和硬FAULT除外。 Cortex-M内核快速关中断指令 Cortex-M内核专门设置了一条CPS指令,有4种用法,具体代码如下: CPSID I ;PRIMASK=1 ; 关中断 CPSIE I ;PRIMASK=0 ;原创 2021-03-16 17:10:44 · 329 阅读 · 0 评论 -
【RT-Thread】学习笔记(实现就绪列表)
线程创建好之后,我们需要把线程添加到就绪列表里面,表示线程已经就绪,系统随时可以调度。就绪列表在 scheduler.c 中定义 实现就绪列表 定义就绪列表 将线程插入到就绪列表 定义就绪列表 //线程就绪列表 rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; 数组下标对应线程优先级 将线程插入到就绪列表 线程控制块里面有个tlist成员,数据类型为rt_list_t,我们将线程插入到就绪列表里面,就是通过将线程..原创 2021-03-15 10:44:54 · 292 阅读 · 0 评论 -
【RT-thread】学习笔记(创建线程)
一、创建线程 定义线程栈 定义线程函数 定义线程控制块 实现线程创建函数 定义线程栈 ALIGN(RT_ALIGN_SIZE) //定义线程栈 rt_uint8_t rt_flag1_thread_stack[512]; rt_uint8_t rt_flag2_thread_stack[512]; 定义线程函数 (线程独立,无线循环,没有返回) void flag1_thread_entry(void *p_arg) { for(;;) {原创 2021-03-15 10:25:02 · 323 阅读 · 0 评论