📄 main.c
字号:
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "drv_extr.h"
#include "kal.h"
KL_thread_t task;
KL_thread_t task2;
KL_timer_t timer;
KL_mailbox_t mailbox;
KL_queue_t queue;
KL_eventgrp_t evt;
#define TASK_STACK_SIZE 1024
//u8_t task_stack[TASK_STACK_SIZE];
//u8_t task2_stack[TASK_STACK_SIZE];
u32_t queue_stack[8];
typedef struct{
u32_t id;
u32_t para;
}TMSG;
void task_1(void *argv, u32_t argc);
void task_2(void *argv, u32_t argc);
void timer_func(u32_t id);
void uart1_LISR(int vector);
void OSMain(void)
{
Status s;
void *p;
p = KL_malloc(TASK_STACK_SIZE);
assert(p != NULL);
s = KL_CreateThread(&task, "task1", task_1, NULL, 0, p, TASK_STACK_SIZE, 10);
assert(s == KL_SUCCESS);
s = KL_CreateTimer(&timer, "timer1", timer_func, 0, 100, 500, KL_TIMER_PERIODLY);
assert(s == KL_SUCCESS);
s = KL_CreateMailbox(&mailbox, "mailbox");
assert(s == KL_SUCCESS);
p = KL_calloc(8, sizeof(u32_t));
assert(p != NULL);
s = KL_CreateQueue(&queue, "queue", p, 8, 2);
assert(s == KL_SUCCESS);
s = KL_CreatEventGroup(&evt, "event");
assert(s == KL_SUCCESS);
s= KL_RegisterISR(IRQ_VECTOR_UART1, uart1_LISR);
uart_init();
lcd_init();
}
void task_1(void *argv, u32_t argc)
{
Status s;
char msg;
void *p;
KL_flags flag;
printf("==============================\n\r");
// s = KL_StartTimer(&timer);
// assert(s == KL_SUCCESS);
/*
p = KL_malloc(TASK_STACK_SIZE);
assert(p != NULL);
s = KL_CreateThread(&task2, "task1", task_2, NULL, 0, p, TASK_STACK_SIZE, 8);
assert(s == KL_SUCCESS);
*/
while(1){
#if 0
s = KL_PendEventGroup(&evt, 0x0111, KL_FLAG_WAIT_ALL_CONSUME, &flag, KL_SUSPEND_FOREVER);
assert(s == KL_SUCCESS);
printf("recv event[0x%08x].\n", flag);
#endif
#if 1
s = KL_ReceiveMail(&mailbox, (void **)(&msg), KL_SUSPEND_FOREVER);
assert(s == KL_SUCCESS);
if ((msg == 0x0d)||(msg == 0x0a)){
uart1_send_char("\n");
uart1_send_char("\r");
}
else
uart1_send_char(&msg);
// printf("msg.id = %d\n", msg.id);
// printf("msg.para = %d\n", msg.para);
#endif
/*
OSTimeDly(500*5);
p = (void *)OS_malloc(0x80000);
if (p){
memset(p,0x11,0x80000);
printf("%03d: 0x%08x\n", i++, (unsigned int)p);
}
else{
printf("%d: no memory!\n", i++);
break;
}
*/
}
}
void task_2(void *argv, u32_t argc)
{
Status s;
TMSG msg;
int i = 2007;
KL_flags f = 1;
while(1){
#if 0
msg.id = i++;
msg.para = KL_GetSysClock();
s = KL_SendMessage(&queue, &msg, 0);
assert(s == KL_SUCCESS);
msg.id = i++;
msg.para = KL_GetSysClock()+10;
s = KL_SendMessage(&queue, &msg, 0);
assert(s == KL_SUCCESS);
msg.id = i++;
msg.para = KL_GetSysClock()+10;
s = KL_SendMessage(&queue, &msg, 0);
assert(s == KL_SUCCESS);
#endif
#if 0
s = KL_PostEventGroup(&evt, f, KL_FLAG_SET);
assert(s == KL_SUCCESS);
printf("send event[0x%08x].\n", f);
KL_Sleep(500*2);
f <<= 1;
#endif
}
}
void timer_func(u32_t id)
{
Status s;
u32_t msg = KL_GetSysClock();
s = KL_SendMail(&mailbox, (void *)msg, KL_SUSPEND_NEVER);
assert(s == KL_SUCCESS);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -