title: 【沁恒 CH32V208 開發(fā)板免費試用】RTT 純命令行(makefile) 和 點燈測試
date: 2023-05-24 18:24:01
tags: 嵌入式
概述
沁恒 CH32V208 開發(fā)板是一款基于risc-v內(nèi)核的微控制器,具有豐富的外設(shè)資源和高性能的處理能力。本文介紹了如何使用makefile進行編譯,并提供了一個簡單的點燈測試程序示例,以驗證開發(fā)板的基本功能是否正常。通過本文的介紹,讀者可以快速上手使用沁恒 CH32V208 開發(fā)板進行開發(fā)。
環(huán)境/工具
需要借助一些軟件和硬件相結(jié)合,做出項目.
軟件
- Windows10 (其他平臺沒測試)
- VScode
- make (針對makefile編譯)
- risc-v 8.2.0 工具箱 (github有提供riscv-none-embed-XXX壓縮包)
- WCHISPTOOLS (沁恒自帶燒錄工具)
- SERIAL DEBUG (查看調(diào)試日志)
首先,讓我們來了解一下如何使用makefile進行編譯。makefile是一種常用的自動化構(gòu)建工具,它可以根據(jù)指定的規(guī)則自動化地生成目標文件和可執(zhí)行文件。在使用makefile之前,需要安裝GNU Make工具,并在項目目錄下創(chuàng)建一個名為Makefile的文件。所以不借助平臺來編譯,只用純命令行來執(zhí)行,所以鍛煉自己能力哈。
硬件
-
CH32V208開發(fā)板
-
wch-link (快遞贈的)
測試
接下來,讓我們來看一下如何進行點燈測試。點燈測試是一種常用的測試方法,可以驗證開發(fā)板的基本功能是否正常。在沁恒 CH32V208 開發(fā)板上,可以通過GPIO口控制LED燈的亮滅。
實例
用makefile來編譯
TARGET := 01LED
include config.mk
include src.mk
CFLAGS += $(CPPPATHS)
CXXFLAGS += $(CPPPATHS)
AFLAGS += $(CPPPATHS)
CFLAGS += $(DEFINES)
CXXFLAGS += $(DEFINES)
AFLAGS += $(DEFINES)
TOOLCHAIN = riscv-none-embed-
CC = $(TOOLCHAIN)gcc
SZ = $(TOOLCHAIN)size
CP = $(TOOLCHAIN)objcopy
AS = $(TOOLCHAIN)gcc
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
# IOT position
ROOT_DIR := ../../../..
# bsp position
BSP_DIR := .
BUILD_DIR = $(BSP_DIR)/build
LD_FILES = $(ROOT_DIR)/bsp/CH32V208/libraries/Ld/link.lds
FLAGS += -march=rv32imac -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -std=gnu99 -DCH32V20x_D8W
C_FLAGS += $(CC) $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
AS_FLAGS += $(CC) $(AFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
LINK_FLAGS += $(CC) $(LFLAGS) $(EXTERN_LIB)
# --specs=nano.specs
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
OBJECT = $(addprefix $(BUILD_DIR)/,$(notdir $(S_FILES:.S=.o)))
vpath %.S $(sort $(dir $(S_FILES)))
OBJECT += $(addprefix $(BUILD_DIR)/,$(notdir $(C_FILES:.c=.o)))
vpath %.c $(sort $(dir $(C_FILES)))
OBJECTS += $(sort $(OBJECT))
$(BUILD_DIR)/%.o:%.S Makefile | $(BUILD_DIR)
$(AS_FLAGS)
$(BUILD_DIR)/%.o:%.c Makefile | $(BUILD_DIR)
$(C_FLAGS)
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) | Makefile
$(LINK_FLAGS) $(OBJECTS) -o $@
$(SZ) --format=berkeley $@
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(HEX) $< $@
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(BIN) $< $@
$(BUILD_DIR):
@echo $(OBJECTS)
mkdir $@
DATE = $(shell date)
push:
git add $(RTT_ROOT)
git commit -m "update :$(DATE)"
git push origin/main
c:
rmdir /s /q build
其中include config.mk
和include src.mk
這2個在Bsp項目同一個文件夾下新建,內(nèi)容是追加頭文件,目標C后綴源代碼,還有一些編譯選項等等。
拿官方的例子,來驗證測試是否正常,畢竟是用makefile,不確定這個項目編譯是否有效果?
#define LED0 rt_pin_get("PA.0")
int main(void)
{
rt_pin_mode(LED0,PIN_MODE_OUTPUT);
rt_kprintf("MCU-CH32V208WBU6\\r\\n");
while(1)
{
rt_pin_write(LED0, PIN_HIGH);
rt_thread_mdelay(500);
rt_pin_write(LED0, PIN_LOW);
rt_thread_mdelay(500);
}
}
演示
代碼
傳送門: github->01LED
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7459瀏覽量
150861 -
嵌入式
+關(guān)注
關(guān)注
5060文章
18975瀏覽量
302113 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4900瀏覽量
97068 -
Makefile
+關(guān)注
關(guān)注
1文章
125瀏覽量
19158 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1261瀏覽量
39842
發(fā)布評論請先 登錄
相關(guān)推薦
評論