add pre support for GD32VF103C_START board

This commit is contained in:
acevest
2019-09-25 23:36:01 +08:00
parent 59c8e69af5
commit 16f3cbb463

View File

@@ -1,89 +1,58 @@
#include "gd32vf103.h" #include "gd32vf103.h"
#include "tos.h" #include "tos.h"
void delay_1ms(uint32_t count)
{
uint64_t start_mtime, delta_mtime;
/* don't start measuruing until we see an mtime tick */ #define TASK_SIZE 512
uint64_t tmp = get_timer_value();
do{
start_mtime = get_timer_value();
}while(start_mtime == tmp);
do{
delta_mtime = get_timer_value() - start_mtime;
}while(delta_mtime <(SystemCoreClock/4000.0 *count));
}
#define TASK_SIZE 1024
k_task_t k_task_task1; k_task_t k_task_task1;
k_task_t k_task_task2; k_task_t k_task_task2;
uint8_t k_task1_stk[TASK_SIZE]; uint8_t k_task1_stk[TASK_SIZE];
uint8_t k_task2_stk[TASK_SIZE]; uint8_t k_task2_stk[TASK_SIZE];
int share = 123; int share = 0xCBA7F9;
k_sem_t sem;
void task1(void *pdata) void task1(void *pdata)
{ {
int t1 = 0; int task_cnt1 = 0;
while(1) while(1) {
{ task_cnt1++;
t1++; tos_sem_pend(&sem, ~0U);
share++; gpio_bit_write(GPIOA, GPIO_PIN_7, share % 2);
//k_tick_t delay = tos_millisec2tick(10);
gpio_bit_write(GPIOA, GPIO_PIN_7, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_7)));
tos_task_delay(1000);
//tos_task_yield();
//osDelay(10);
//asm("wfi;");
} }
} }
void task2(void *pdata) void task2(void *pdata)
{ {
int t2 = 0; int task_cnt2 = 0;
while(1) while(1) {
{ task_cnt2--;
t2--; share++;
share--; tos_task_delay(1000);
//tos_task_delay(10); tos_sem_post(&sem);
tos_task_yield();
asm("wfi;");
} }
} }
void main(void) { void main(void) {
rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOA);
/* configure LED GPIO port */
gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7); gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
gpio_bit_reset(GPIOA, GPIO_PIN_7); gpio_bit_reset(GPIOA, GPIO_PIN_7);
tos_knl_init(); tos_knl_init();
tos_task_create(&k_task_task1, "task1", task1, NULL, 3, k_task1_stk, TASK_SIZE, 0); tos_task_create(&k_task_task1, "task1", task1, NULL, 3, k_task1_stk, TASK_SIZE, 0);
//tos_task_create(&k_task_task2, "task2", task2, NULL, 3, k_task2_stk, TASK_SIZE, 0); tos_task_create(&k_task_task2, "task2", task2, NULL, 3, k_task2_stk, TASK_SIZE, 0);
//eclic_irq_enable(CLIC_INT_TMR, 0, 0); k_err_t err = tos_sem_create(&sem, 1);
tos_knl_start(); if (err != K_ERR_NONE) {
goto die;
int c = 0;
while(1)
{
c++;
asm("wfi;");
} }
while(1){ tos_knl_start();
/* insert 500 ms delay */
delay_1ms(1000);
/* toggle the LED */ die:
gpio_bit_write(GPIOA, GPIO_PIN_7, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_7))); while(1) {
asm("wfi;");
/* insert 500 ms delay */ }
delay_1ms(1000);
}
} }