- 博客(0)
- 资源 (13)
- 收藏
- 关注
h743v h750v分散加载qspiflah作为运行程序和字库
h750v h743v分散加载,qspiflash既作为字库文件也作为程序储存。lcd显示sd卡文件系统,程序既在片内flash运行又在片外flash运行,下载算法见我另一个资源,琢磨不易,拿出来分享。@565962795
2021-08-16
f1ucoss终结版.rar
不超过100行的FReeRTOS,只有核心代码。只适合转牛角尖者,研究FReeRTOS原理者。
#include "task.h"
#include "usart.h"
TCB *TCBCur;
u32 Prio_t = 0;
TCB TCBL[64];
void task_create(void (* task)(void ),u32 *STK,u32 prio)
{
TCBCur = &TCBL;[prio];
*(--STK) = 1<<24;
*(--STK) = ( u32 ) task;
TCBL[prio].stkPtr = STK-14;
}
void CtxSw( void )
{
TCBCur = &TCBL;[ Prio_t ];
}
u8 STK_SizeChk(u32 *STK)
{
u32 i=0;
while(!*STK++)i++;
return i;
}
__asm void OSstart( void )
{
extern TCBCur;
PRESERVE8
ldr r3, =TCBCur /* Obtain location of TCBCur. */
ldr r1, [r3]
ldr r0, [r1] /* The first item in TCBCur is the task top of stack. */
adds r0, #32 /* Discard everything up to r0. */
msr psp, r0 /* This is now the new top of stack to use in the task. */
movs r0, #2 /* Switch to the psp stack. */
msr CONTROL, r0
pop {r0-r5} /* Pop the registers that are saved automatically. */
mov lr, r5 /* lr is now in r5. */
cpsie i /* The first task has its context and interrupts can be enabled. */
pop {pc} /* Finally, pop the PC to jump to the user defined task code. */
ALIGN
}
__asm void PendSV_Handler( void )
{
extern CtxSw
extern TCBCur
PRESERVE8
mrs r0, psp
ldr r3, =TCBCur /* Get the location of the current TCB. */
ldr r2, [r3]
subs r0, #32 /* Make space for the remaining low registers. */
str r0, [r2] /* Save the new top of stack. */
stmia r0!, {r4-r7} /* Store the low registers that are not saved automatically. */
mov r4, r8 /* Store the high registers. */
mov r5, r9
mov r6, r10
mov r7, r11
stmia r0!, {r4-r7}
push {r3, r14}
cpsid i
bl CtxSw
cpsie i
pop {r2, r3} /* lr goes in r3. r2 now holds tcb pointer. */
ldr r1, [r2]
ldr r0, [r1] /* The first item in TCBCur is the task top of stack. */
adds r0, #16 /* Move to the high registers. */
ldmia r0!, {r4-r7} /* Pop the high registers. */
mov r8, r4
mov r9, r5
mov r10, r6
mov r11, r7
msr psp, r0 /* Remember the new top of stack for the task. */
subs r0, #32 /* Go back for the low registers that are not automatically restored. */
ldmia r0!, {r4-r7} /* Pop low registers. */
bx r3
ALIGN
}
2019-08-11
stm32f103移植的最简洁ucoss系统
删掉所有对于初学者没必要的不相关的定义变量,参数,函数,只剩下Ucoss必须需要的核心变量,函数,参数。真的是超净系统,我也是初学者,在学习的过程中一步一步的把系统中的垃圾全部清理掉,不容易啊。对于初学者最开始更需要的是指导其工作原理,其他的像什么发送消息什么事件的那都是后事。扣扣565962795,可以一起探讨。
2018-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人