support avr architecture based on ATMega32
1. IAR project, see TencentOS-tiny\board\ATMega32\IAR, both 4.12 and 7.20 is supplied.
This commit is contained in:
88
board/ATMega32/USER/main.c
Normal file
88
board/ATMega32/USER/main.c
Normal file
@@ -0,0 +1,88 @@
|
||||
#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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user