Files
c_soft/riscv/startup/main.c

68 lines
1.0 KiB
C
Raw Normal View History

#include "stdint.h"
2025-04-17 19:17:03 +08:00
#include "stdio.h"
#include "stdarg.h"
#include "head.h"
2025-06-13 16:22:30 +08:00
#include "rtthread.h"
#define PRINT_BASE_ADDR *(uint8_t *)0x40000000
int my_putc(int c) {
PRINT_BASE_ADDR = c;
return c;
}
2025-06-13 14:38:32 +08:00
int my_puts(const char *s,int len) {
2025-04-17 19:17:03 +08:00
for (int i = 0;i < len;i++) {
my_putc(s[i]);
}
return 0;
}
2025-04-17 19:17:03 +08:00
static char g_print_buff[1024];
int my_printf(const char* fmt, ...) {
int len = 0;
va_list args;
va_start(args, fmt);
len = vsnprintf(g_print_buff, 1024, fmt, args);
va_end(args);
my_puts(g_print_buff, len);
return len;
}
2025-04-17 00:04:59 +08:00
2025-06-13 16:22:30 +08:00
char g_string[] = "string from ram";
void task1(void* par) {
(void)par;
while (1) {
my_printf("task1: %s\n", g_string);
rt_thread_delay(500);
}
2025-04-17 15:35:32 +08:00
}
2025-04-17 00:04:59 +08:00
2025-04-17 19:17:03 +08:00
2025-06-13 16:22:30 +08:00
2025-04-17 19:17:03 +08:00
2025-04-17 00:04:59 +08:00
int main()
{
2025-04-17 19:17:03 +08:00
my_printf("Hello World! %s\n", "Andy");
2025-06-13 16:22:30 +08:00
// cpu_test();
2025-04-18 19:18:49 +08:00
2025-06-13 16:22:30 +08:00
rt_thread_t t = rt_thread_create("task1", task1, 0, 1024, 10, 10);
(void)t;
rt_thread_startup(t);
2025-06-12 17:29:27 +08:00
my_printf("enter while 1\n");
while (1) {
2025-06-13 16:22:30 +08:00
my_printf("main: %s\n", g_string);
rt_thread_delay(1000);
2025-06-12 17:29:27 +08:00
}
return 0;
2025-04-17 00:04:59 +08:00
}