Browse Source

format code

pull/3/head
zhibiao.xu 4 months ago
parent
commit
cf28801cc8
  1. 4
      Core/Src/main.c
  2. 16
      thead/src/thread.c

4
Core/Src/main.c

@ -58,7 +58,7 @@ void prosee1(void *data)
while(1) while(1)
{ {
__disable_irq(); __disable_irq();
printf("prosee_%d, stack_ptr:%#x\r\n", self->task_id, self->stack_ptr); printf("prosee_id:%d, stack_ptr:%#x\r\n", self->task_id, self->stack_ptr);
__enable_irq(); __enable_irq();
HAL_Delay(1000); HAL_Delay(1000);
} }
@ -70,7 +70,7 @@ void prosee2(void *data)
while(1) while(1)
{ {
__disable_irq(); __disable_irq();
printf("prosee_%d, stack_ptr:%#x\r\n", self->task_id, self->stack_ptr); printf("prosee_id:%d, stack_ptr:%#x\r\n", self->task_id, self->stack_ptr);
__enable_irq(); __enable_irq();
HAL_Delay(1000); HAL_Delay(1000);
} }

16
thead/src/thread.c

@ -4,7 +4,6 @@
#include "usart.h" #include "usart.h"
#include "thread.h" #include "thread.h"
/*** /***
next_task为下一个执行目标 next_task为下一个执行目标
***/ ***/
@ -42,12 +41,9 @@ uint8_t tcb_cunt = 0;
static uint8_t max_tcb = 0; static uint8_t max_tcb = 0;
void tcb_scheduler(void) void tcb_scheduler(void)
{ {
if(tcb_cunt >= 1) tcb_cunt = tcb_cunt % 2;
{
tcb_cunt = -1;
}
tcb_cunt++;
next_task = task[tcb_cunt]; next_task = task[tcb_cunt];
tcb_cunt++;
SCB->ICSR |= SCB_ICSR_PENDSVSET_Msk; SCB->ICSR |= SCB_ICSR_PENDSVSET_Msk;
__DSB(); __DSB();
__ISB(); __ISB();
@ -64,8 +60,8 @@ void init_task(tcb_t *tcb, void (*task_entry)(void *), uint8_t *start_stack, voi
tcb_id++; tcb_id++;
tcb->task_id = tcb_id; tcb->task_id = tcb_id;
tcb->stack_ptr = (uint32_t *)start_stack; tcb->stack_ptr = (uint32_t *)start_stack;
uint32_t *stack_top = (uint32_t*)((uint8_t*)tcb->stack_ptr + STACK_SIZE); uint32_t *stack_top = (uint32_t *)((uint8_t *)tcb->stack_ptr + STACK_SIZE);
stack_top = (uint32_t*)((uint32_t)stack_top & ~0x07); stack_top = (uint32_t *)((uint32_t)stack_top & ~0x07);
*(--stack_top) = 0x01000000; // xPSR *(--stack_top) = 0x01000000; // xPSR
*(--stack_top) = (uint32_t)task_entry; // PC *(--stack_top) = (uint32_t)task_entry; // PC
@ -76,7 +72,7 @@ void init_task(tcb_t *tcb, void (*task_entry)(void *), uint8_t *start_stack, voi
*(--stack_top) = 0x00000000; // R1 *(--stack_top) = 0x00000000; // R1
*(--stack_top) = (uint32_t)arg; // R0 (参数) *(--stack_top) = (uint32_t)arg; // R0 (参数)
for (int i = 0; i < 8; i++) for(int i = 0; i < 8; i++)
{ {
*(--stack_top) = 0x12345678; // R4-R11 *(--stack_top) = 0x12345678; // R4-R11
} }
@ -89,5 +85,3 @@ void init_task(tcb_t *tcb, void (*task_entry)(void *), uint8_t *start_stack, voi
next_task = tcb; next_task = tcb;
} }
} }

Loading…
Cancel
Save