Files
TencentOS-tiny/board/ATMega32/USER/main.c
daishengdong 7e6ce005e6 support avr architecture based on ATMega32
1. IAR project, see TencentOS-tiny\board\ATMega32\IAR, both 4.12 and 7.20 is supplied.
2020-03-03 18:27:24 +08:00

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);
}