void GPIO_Toggle_INIT(void){ GPIO_InitTypeDef GPIO_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);}int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Delay_Init(); GPIO_Toggle_INIT();while(1) { Delay_Ms(500); PAout(0) ^= (1<<0); }}由於我使用PA0點燈,記得將LED連接到PA0即可。
四、學習將視頻轉GIF,看著方便
為了方便和朋友們交流,將原始碼上傳上來,下載請點擊閱讀原文。
1. WCH沁恆CH32F103開發板總體製作精良,用心了
2. 代碼風格和ST一樣一樣滴,上手也快
3. 外設功能和ST有細微差異,看過手冊也都能明白
4. 這塊開發板的其它功能,待後續慢慢搞,後面準備搞個U盤自動更新功能,哈哈【沁恆WCH32F103測評報告】WCH32F103C8T6串口下載方法及串口列印
習慣了STC和Arduino的串口下載,對於arm32-M3指令集的國產晶片CH32F103C8T6,也在摸索著使用串口下載。在開發板的包裡,乾貨滿滿,但是手頭上沒有SWD接口的編程器。找了資料,STM32F103是可以用串口下載的。前提是,你要連接好PA9(UART1_TX),以及PA10(UART1_RX)到USB-TLL轉接板,比如CH340G的小板。
另外,需要設置BOOT啟動的方式。跳線接法:BOOT1 -->GND, BOOT0-->VCC,這樣才會從晶片內的出廠固件內存引導啟動,這裡相當於Arduino的BootLoader的功能。平常的接法是BOOT0-->GND,這是從Flash區運行啟動代碼,跳過了廠家代碼區。
2.硬體準備好後,需要軟體。下載WCH_ISP_tool(2.8)下載連結.
注意要選擇CH32F1系列標籤,Keil MDK編譯器生成的Hex文件,需要再用戶程序文件框內選擇。
注意可以多試幾次,比如插拔USB轉串口小板。還有當出現「解除防寫」,需要先點擊「解除保護」按鈕。之後再點擊下載。
4.測試UART_Printf串口列印功能
開發板的串口調試功能可以方便的輸出一些具體的信息,作為程序運行的重要參考。這裡我測試了math.h的正弦函數計算功能。算是發揮一下32位CPU的優勢。想起來計算氫彈的理論的501機,每秒不過幾十萬次加法運算。這個機子已經遠遠超過了當年的龐然大物。int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Delay_Init(); USART_Printf_Init(115200); /* printf using USART1 */printf("SystemClk:%d\r\n",SystemCoreClock);printf("This is printf example\r\n");printf("sin(pi/3)=%f",sin(PI/3));while(1) { }}
附閱讀材料:中國計算機60年國產計算機前史【RISC-V MCU CH32V103測評】01:LED Demo第一次體驗risc-v的板子,真的是不錯,快遞也很迅速。而且cortex m系列挺像的,這樣上手就很容易了,體驗一下點燈操作。
點燈需要注意的是,led小燈沒有連接到mcu的引腳上,需要自己用杜邦線連接一下
代碼也很簡單,有stm32經驗的很容易/********************************** (C) COPYRIGHT ******************************** File Name : main.c* Author : WCH* Version : V1.0.0* Date : 2020/04/30* Description : Main program body.*******************************************************************************/#include "debug.h"void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);}void GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){ GPIOx->OUTDR ^= GPIO_Pin;}int main(void){ Delay_Init(); //USART_Printf_Init(115200); //printf("SystemClk:%d\r\n",SystemCoreClock); LED_Init(); while(1) { Delay_Ms(1000); GPIO_TogglePin(GPIOA, GPIO_Pin_0); }}【RISC-V MCU CH32V103測評】02:USART Demo注意,WCH-Link的串口只能發送,不能接收!直接在上一個LED Demo基礎上添加。
添加串口1,通過串口接收中斷來接收數據,接收到回車鍵,一幀數據結束。
主程序裡處理串口數據(或丟棄或返回)
用其他usb轉ttl工具,看看顯示
串口調試助手顯示結果你認為這款開發板如何?之後嵌入式ARM還會繼續登載國產替代者的更多測評信息。