add pre support for GD32VF103C_START board
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
k_err_t err = tos_sem_create(&sem, 1);
|
||||||
|
if (err != K_ERR_NONE) {
|
||||||
|
goto die;
|
||||||
|
}
|
||||||
|
|
||||||
//eclic_irq_enable(CLIC_INT_TMR, 0, 0);
|
|
||||||
tos_knl_start();
|
tos_knl_start();
|
||||||
|
|
||||||
|
die:
|
||||||
int c = 0;
|
while(1) {
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
c++;
|
|
||||||
asm("wfi;");
|
asm("wfi;");
|
||||||
}
|
}
|
||||||
|
|
||||||
while(1){
|
|
||||||
/* insert 500 ms delay */
|
|
||||||
delay_1ms(1000);
|
|
||||||
|
|
||||||
/* toggle the LED */
|
|
||||||
gpio_bit_write(GPIOA, GPIO_PIN_7, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_7)));
|
|
||||||
|
|
||||||
/* insert 500 ms delay */
|
|
||||||
delay_1ms(1000);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user