- 博客(4)
- 收藏
- 关注
原创 FreeRTOS实现调度器
此函数将pxCurrentTCB指向的将要执行的任务栈中信息传入相应寄存器,然后更新psp指针指向r0,在SVC中断服务函数退出前向r14寄存器或上0x0d,让中断返回时后使用PSP栈指针(在中断退出前,内核会检查r14最后四位来判断中断返回后使用那个指针,通常情况下默认使用MSP),然后bx r14跳转,此时会自动根据栈指针(此时使用的是PSP)将r0—xPSR寄存器值更新,最后PSP指向任务栈栈底。此时,任务开始运行了。接下来调用SVC产生SVC中断,在SVC中断服务函数里面真正的启动我们第一个函数。
2023-11-24 00:21:31
197
2
原创 FreeRTOS任务的定义与任务切换
在裸机系统中,如果有全局变量,有函数调用,在中断发生时,全局变量以及函数内部信息怎么存放,我们并不关心,因为硬件会自动操作,中断产生就保存函数内部信息,中断返回就将保存的信息恢复到ARM的相关寄存器里,但是在裸机系统里面,每次中断产生最多只能产生一个,所以硬件保存只能保存一个函数的内部信息,但是在RTOS中,任务(也就是函数)之间是不断来回切换执行的,如果再交给硬件处理,那么函数的内部信息保存与恢复就会错乱导致函数执行不成功,这时就需要我们自己定义函数栈,在任务切换时手动保存信息和恢复信息。
2023-11-20 19:31:37
175
1
原创 FreeRTOS列表与列表项详细讲解
2,pxIndex指向链表节点,用于遍历节点。3,xListEnd一个MiniListItem_t类型链表节点(MiniListItem_t类型下面讲解),这个节点就是链表的尾节点,但链表是首尾相连,所以也是首节点。通过xItemValue以及利用for循环查找所属位置并插入,如果和尾节点序号一样,则 插在尾节点前面,同时更新节点统计数,pvContainer指向根节点,表明节点所属链表。将节点与精简节点(尾节点)相连同时更新节点统计数,pvContainer指向根节点,表明节点所属链表。
2023-11-19 03:06:46
189
1
原创 掺杂浓度影响PN结的宽度以及雪崩和齐纳击穿
为什么说浓度高的一侧电场越窄,浓度低的一侧电场越宽。首先我们要知道,由于晶格结构,半导体中的离子位置是固定住的,不会像电子一样移动。为了提高P,N半导体的载流子浓度我们就需要相应的掺杂硼,磷。于是半导体里的对应的离子浓度也会提高。我们假设阻止N区多子移动需要六个负离子形成电场,阻止P区多子移动需要六个正离子形成电场,于是就形成如上图所示PN结。
2023-09-30 16:52:18
4292
3
空空如也
map文件中类型问题
2024-02-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人