walker2048 发表于 2024-7-15 17:42

全能小网关|CH32V208--1. 开箱和运行Tencent TinyOS例程

### 前言
CH32V208评估板是wch出品的一款搭载了CH32V208WBU6处理器的评估开发板。
CH32V208 搭载 V4C 内核,增加内存保护功能,减少硬件除法周期。在产品功能上支持 144MHz 主频零等待运行,该系列产品集成 2Mbps 低功耗蓝牙BLE 通讯模块、10M 以太网 MAC+PHY 模块、USB2.0 全速设备+主机/设备接口、CAN 控制器等。

#### 开箱图片
可以看到板子除了引出所有的io外,两个USB,一个网口,整个板子设计也是非常简洁的,可以说用来测试和开发ch32v208的各种功能已经足够了。整个板子设计也比较简洁,按键只有3个,分别是下载按钮、重启按钮和用户按钮,需要注意的是,LED和网络接口的LED需要用户自行接跳线到gpio使用,板子并没有默认连接gpio。


#### 测试程序
我们在官网下载ch32v208的evt开发包,解压缩之后就可以使用了。例如本案例使用的是Tencent TinyOS的案例。
文件路径EVT\EXAM\TencentOS\TencentOS
演示程序的功能其实也非常简单,也就是创建两个线程,并运行,然后两个线程里分别输出对应的log。
```c
/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2021/06/06
* Description      : Main program body.
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* SPDX-License-Identifier: Apache-2.0
*******************************************************************************/

/*
*@Note
GPIO例程:
PA0推挽输出。

*/

#include "debug.h"
#include "tos_k.h"


/* Global define */


/* Global Variable */


/*********************************************************************
* @fn      GPIO_Toggle_INIT
*
* @brief Initializes GPIOA.0
*
* @return none
*/
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}


#define TASK1_STK_SIZE       1024
k_task_t task1;
__aligned(4) uint8_t task1_stk;


#define TASK2_STK_SIZE       1024
k_task_t task2;
__aligned(4) uint8_t task2_stk;

void task1_entry(void *arg)
{
    while (1)
    {
      printf("###I am task1\r\n");
      tos_task_delay(2000);
    }
}

void task2_entry(void *arg)
{
    while (1)
    {
      printf("***I am task2\r\n");
      tos_task_delay(1000);
    }
}


/*********************************************************************
* @fn      main
*
* @brief   Main program.
*
* @returnnone
*/
int main(void)
{
        USART_Printf_Init(115200);
        printf("SystemClk:%d\r\n",SystemCoreClock);


        printf("Welcome to TencentOS tiny(%s)\r\n", TOS_VERSION);
    tos_knl_init();
    tos_task_create(&task1, "task1", task1_entry, NULL, 3, task1_stk, TASK1_STK_SIZE, 0); // Create task1
    tos_task_create(&task2, "task2", task2_entry, NULL, 3, task2_stk, TASK2_STK_SIZE, 0);// Create task2
    tos_knl_start();

    printf("should not run at here!\r\n");

    while(1)
        {
          asm("nop");
        }
}

```
直接编译程序就可以了,编译成功如下图所示。

#### 下载程序并运行
下载程序可以通过在线调试debug的方式,或者是独立的下载模块,下载前需要先配置下载器和对应的芯片,如下图所示


#### 编译运行效果
可以看到,串口上发出了两个线程轮流输出的log信息,已经顺利跑起来了。

页: [1]
查看完整版本: 全能小网关|CH32V208--1. 开箱和运行Tencent TinyOS例程