This commit is contained in:
Imbus 2025-02-09 15:12:27 +01:00
commit 8b34c6b1cd
3 changed files with 107 additions and 0 deletions

65
Makefile Normal file
View file

@ -0,0 +1,65 @@
REV := master
BASE := https://raw.githubusercontent.com/cnlohr/ch32v003fun/$(REV)/ch32fun
CURL_FLAGS := -O -\# --fail --location --tlsv1.2 --proto =https --max-time 300
TARGET = blink
TARGET_MCU?=CH32V003
NEWLIB=/usr/arm-none-eabi/include
CFLAGS=-g -Os -flto -ffunction-sections -fdata-sections -fmessage-length=0 -msmall-data-limit=8
LDFLAGS+=-Wl,--print-memory-usage -Wl,-Map=$(TARGET).map
PREFIX := riscv64-linux-gnu
CC := $(PREFIX)-gcc
# riscv64-linux-gnu-gcc -E -P -x c -DTARGET_MCU=CH32V003 -DMCU_PACKAGE= -DTARGET_MCU_LD=0 -DTARGET_MCU_MEMORY_SPLIT= ../../ch32fun/ch32fun.ld > ../../ch32fun/generated_ch32v003.ld
# riscv64-linux-gnu-gcc -o blink.elf ../../ch32fun/ch32fun.c blink.c -g -Os -flto -ffunction-sections -fdata-sections -fmessage-length=0 -msmall-data-limit=8 -march=rv32ec -mabi=ilp32e -DCH32V003=1 -static-libgcc -I/usr/arm-none-eabi/include -I../../ch32fun/../extralibs -I../../ch32fun -nostdlib -I. -Wall -Wl,--print-memory-usage -Wl,-Map=blink.map -L../../ch32fun/../misc -lgcc -T ../../ch32fun/generated_ch32v003.ld -Wl,--gc-sections
# Correct?
EXTFLAGS := -march=rv32ec -mabi=ilp32e -DCH32V003=1 -static-libgcc -I/usr/arm-none-eabi/include -nostdlib -I. -Wall -L. -lgcc -T ch32v003.ld -Wl,--gc-sections
default: $(TARGET).bin
$(TARGET).elf: ch32fun.c blink.c | ch32v003.ld ch32fun.h ch32v003hw.h
@echo CC $@
@$(CC) $(CFLAGS) $(LDFLAGS) $(EXTFLAGS) -o $@ $^
ch32v003.ld: ch32fun.ld
@riscv64-linux-gnu-gcc -E -P -x c -DTARGET_MCU=$(TARGET_MCU) -DMCU_PACKAGE= -DTARGET_MCU_LD=0 -DTARGET_MCU_MEMORY_SPLIT= $< > $@
ch32fun.ld:
@curl $(CURL_FLAGS) $(BASE)/ch32fun.ld
ch32fun.c:
@curl $(CURL_FLAGS) $(BASE)/ch32fun.c
ch32v003hw.h:
@curl $(CURL_FLAGS) $(BASE)/ch32v003hw.h
ch32fun.h:
@curl $(CURL_FLAGS) $(BASE)/ch32fun.h
deps:
@curl $(CURL_FLAGS) $(BASE)/ch32fun.ld
@curl $(CURL_FLAGS) $(BASE)/ch32v003hw.h
@curl $(CURL_FLAGS) $(BASE)/ch32fun.c
@curl $(CURL_FLAGS) $(BASE)/ch32fun.h
$(TARGET).bin : $(TARGET).elf
$(PREFIX)-objdump -S $^ > $(TARGET).lst
$(PREFIX)-objcopy -O binary $< $(TARGET).bin
$(PREFIX)-objcopy -O ihex $< $(TARGET).hex
flash:
minichlink -w $(TARGET).bin flash -b
clean:
rm -f ch32*.[ch]
rm -f *.ld
rm -f *.hex
rm -f *.bin
rm -f *.map
rm -f *.lst
rm -f *.elf
rm -f *.ld
.PHONY: clean flash deps default

35
blink.c Normal file
View file

@ -0,0 +1,35 @@
#include "ch32fun.h"
#include <stdio.h>
// use defines to make more meaningful names for our GPIO pins
#define PIN_1 PD0
#define PIN_K PD4
#define PIN_BOB PD6
#define PIN_KEVIN PC0
int main()
{
SystemInit();
// Enable GPIOs
funGpioInitAll();
funPinMode( PIN_1, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP );
funPinMode( PIN_K, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP );
funPinMode( PIN_BOB, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP );
funPinMode( PIN_KEVIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP );
while(1)
{
funDigitalWrite( PIN_1, FUN_HIGH );
funDigitalWrite( PIN_K, FUN_HIGH );
funDigitalWrite( PIN_BOB, FUN_HIGH );
funDigitalWrite( PIN_KEVIN, FUN_HIGH );
Delay_Ms( 250 );
funDigitalWrite( PIN_1, FUN_LOW );
funDigitalWrite( PIN_K, FUN_LOW );
funDigitalWrite( PIN_BOB, FUN_LOW );
funDigitalWrite( PIN_KEVIN, FUN_LOW );
Delay_Ms( 250 );
}
}

7
funconfig.h Normal file
View file

@ -0,0 +1,7 @@
#ifndef _FUNCONFIG_H
#define _FUNCONFIG_H
#define CH32V003 1
#endif