89 lines
1.6 KiB
C
89 lines
1.6 KiB
C
#include "iom32.h"
|
|
#include "uart.h"
|
|
#include "tos_k.h"
|
|
|
|
#include "stdio.h"
|
|
|
|
#pragma vector = TIMER1_OVF_vect
|
|
__interrupt void TIMER1_OVF(void)
|
|
{
|
|
if (tos_knl_is_running()) {
|
|
tos_knl_irq_enter();
|
|
tos_tick_handler();
|
|
tos_knl_irq_leave();
|
|
}
|
|
}
|
|
|
|
#pragma vector = USART_RXC_vect
|
|
__interrupt void UART0_rx(void)
|
|
{
|
|
unsigned char rx_data;
|
|
rx_data = UDR;
|
|
}
|
|
|
|
void interrupt_enable(void)
|
|
{
|
|
SREG |= (1 << 7);
|
|
}
|
|
|
|
void task1_entry(void *arg)
|
|
{
|
|
while (1) {
|
|
uart_send_string("task1\r\n");
|
|
tos_task_delay(2000);
|
|
}
|
|
}
|
|
|
|
void task2_entry(void *arg)
|
|
{
|
|
while (1) {
|
|
uart_send_string("task2\r\n");
|
|
tos_task_delay(3000);
|
|
}
|
|
}
|
|
|
|
k_task_t task1;
|
|
k_stack_t task1_stack[128];
|
|
|
|
k_task_t task2;
|
|
k_stack_t task2_stack[128];
|
|
|
|
#define APPLICATION_TASK_STK_SIZE 256
|
|
|
|
k_task_t task_app;
|
|
k_stack_t task_app_stack[128];
|
|
|
|
void application_entry(void * arg)
|
|
{
|
|
tos_task_create(&task1, "task1", task1_entry, NULL,
|
|
4,
|
|
task1_stack, sizeof(task1_stack),
|
|
0);
|
|
|
|
tos_task_create(&task2, "task2", task2_entry, NULL,
|
|
4,
|
|
task2_stack, sizeof(task2_stack),
|
|
0);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
uart_init(9600);
|
|
timer1();
|
|
|
|
uart_send_string("welcome to TencentOS tiny!\r\n");
|
|
printf("welcome to TencentOS tiny!\r\n");
|
|
|
|
tos_knl_init();
|
|
|
|
tos_task_create(&task_app, "app", application_entry, NULL,
|
|
4,
|
|
task_app_stack, sizeof(task_app_stack),
|
|
0);
|
|
|
|
tos_knl_start();
|
|
|
|
while (1);
|
|
}
|
|
|