簡介
CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開源指令集設(shè)計。 片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。 此系列具有1路USB2.0主機/設(shè)備接口、多通道12位ADC轉(zhuǎn)換模塊、多通道TouchKey、多組定時器、多路IIC/USART/SPI接口等豐富的外設(shè)資源。
本章通過點亮LED作為CH32V103系列MCU應(yīng)用開發(fā)的第一個教程,其LED燈控制使用到GPIO外設(shè)的基本輸出功能,本章將通過點亮LED對CH32V103的GPIO進行基本的學(xué)習(xí)了解。
1、GPIO簡介及其庫函數(shù)介紹
GPIO,全稱為通用輸入輸出端口,其可與外部設(shè)備連接實現(xiàn)MCU與外部設(shè)備的通訊、控制、信號采集等功能。 本教程即通過CH32V103的GPIO與LED連接,實現(xiàn)MCU對LED的輸出控制。 關(guān)于CH32V103 GPIO的具體介紹,可參考CH32V103應(yīng)用手冊和數(shù)據(jù)手冊。
進行LED點亮程序編寫之前,需對GPIO固件庫進行了解。 GPIO相關(guān)的函數(shù)和定義分布在固件庫文件ch32v10x_gpio.c和頭文件ch32v10x_gpio.h文件中,LED點亮程序需要調(diào)用GPIO固件庫文件中某些函數(shù),GPIO庫函數(shù)相關(guān)函數(shù)如下:
1.1、無效GPIO_DeInit(GPIO_TypeDef* GPIOx)
功 能:將GPIOx外圍寄存器初始化為其默認(rèn)重置值。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG。
1.2、無效GPIO_AFIODeInit(無效)
功 能:將復(fù)用功能(重映射,事件控制與EXTI設(shè)置)重設(shè)為默認(rèn)值。 通俗理解可認(rèn)為此函數(shù)功能為初始化所有的復(fù)用功能。
參 數(shù):無。
1.3、無效GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
功 能: GPIO初始化函數(shù),根據(jù)GPIO_InitStructure中的指定參數(shù)初始化GPIO外設(shè)寄存器。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_InitStructure為GPIO_InitTypedef類型結(jié)構(gòu)體指針,指向包含GPIO外設(shè)配置信息的GPIO_InitTypedef結(jié)構(gòu)體。
1.4、void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
功 能:初始化結(jié)構(gòu)體成員,即用其默認(rèn)值填充每個GPIO_StructInit成員,包括GPIO_Pin、GPIO_Speed、GPIO_Mode等。
參 數(shù):GPIO_StructInit為指向結(jié)構(gòu)體GPIO_InitTypedef的指針,待初始化。
1.5、uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
功 能:讀取指定端口管腳的輸入(0或1)。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_Pin用來選擇待讀取的端口位。
1.6、uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
功 能:讀取指定的GPIO輸入數(shù)據(jù)端口。
參 數(shù):無。
1.7、uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
功 能:讀取指定端口管腳的輸出(0或1)。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_Pin用來選擇待讀取的端口位。
1.8、uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
功 能:讀取指定的GPIO輸出數(shù)據(jù)端口。
參 數(shù):無。
1.9、void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
功 能:設(shè)置指定的數(shù)據(jù)端口位,可理解為將指定的引腳設(shè)置為高電平。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_Pin用來選擇待設(shè)置的端口位。
1.10、void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
功 能:清除指定的數(shù)據(jù)端口位,可理解為將指定的引腳設(shè)置為低電平。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_Pin用來選擇待設(shè)置的端口位。
1.11、void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
功 能:設(shè)置或清除指定的數(shù)據(jù)端口位,可理解為將指定的引腳設(shè)置為高電平或低電平。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;GPIO_Pin用來選擇待設(shè)置的端口位;BitVal為指定待寫入的值,該參數(shù)必須取枚舉BitAction的其中一個值。
1.12、void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
功 能:向指定的GPIO端口寫入數(shù)據(jù)
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;PortVal為待寫入端口數(shù)據(jù)寄存器(ODR寄存器)的值。
1.13、void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
功 能:鎖定GPIO管腳配置寄存器。
參 數(shù):GPIOx用來選擇GPIO外設(shè),取值可為GPIOA-GPIOG;,GPIO_Pin為待鎖定的端口位。
1.14、void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
功 能:選擇GPIO管腳用作事件輸出
參 數(shù):GPIO_PortSource為選擇用作事件輸出的GPIO端口;GPIO_PinSource為事件輸出的管腳。
1.15、無效GPIO_EventOutputCmd(功能狀態(tài)新狀態(tài))
功 能:使能或失能事件輸出
參 數(shù):NewState為管腳重映射的新狀態(tài),該參數(shù)可以取ENABLE或DISABLE。
1.16、無效GPIO_PinRemapConfig(uint32_t GPIO_Remap,功能狀態(tài)新狀態(tài))
功 能:更改指定管腳的映射。
參 數(shù):GPIO_Remap為選擇重映射的管腳; NewState為管腳重映射的新狀態(tài),該參數(shù)可以取ENABLE或DISABLE。
1.17、無效GPIO_EXTILineConfig(uint8_t GPIO_PortSource、uint8_t GPIO_PinSource)
功 能:選擇GPIO管腳用作外部中斷線路。
參 數(shù):GPIO_PortSource為選擇用作外部中斷線源的GPIO端口; GPIO_PinSource為待設(shè)置的外部中斷線路。
2、硬件設(shè)計
由于本次教程為點亮LED,需用到LED。 開發(fā)板上帶有兩個LED燈(LED1和LED2),用兩根杜邦線分別將LED1和LED2與對應(yīng)GPIO引腳連接起來,此處連接方式為:
LED1與PA0連接;
LED2與PA1連接。
3、軟件設(shè)計
LED點亮程序通過控制CH32V103 GPIO引腳的電平高低實現(xiàn)LED閃爍,其實現(xiàn)步驟如下:
定義一個GPIO_InitTypeDef類型結(jié)構(gòu)體,結(jié)構(gòu)體成員包括GPIO_Pin、GPIO_Mode、GPIO_Speed;
使能GPIO時鐘,否則GPIO引腳不工作,本次實驗使能GPIOA時鐘;
配置GPIO_InitTypeDef類型結(jié)構(gòu)體成員參數(shù),及配置GPIO引腳為對應(yīng)引腳、GPIO模式為推挽輸出、GPIO口輸出速度為相應(yīng)值;
調(diào)用庫函數(shù),初始化GPIO;
調(diào)用庫函數(shù),設(shè)置GPIO引腳輸出電平。
LED點亮程序如下:
完成led.c和led.h之后,對其進行編譯保存,繼續(xù)對main函數(shù)進行編寫,main函數(shù)具體代碼如下:
main.c文件
-
處理器
+關(guān)注
關(guān)注
68文章
20069瀏覽量
242751 -
led
+關(guān)注
關(guān)注
243文章
24327瀏覽量
683667 -
mcu
+關(guān)注
關(guān)注
147文章
18383瀏覽量
378868 -
GPIO
+關(guān)注
關(guān)注
16文章
1300瀏覽量
55270 -
RISC-V
+關(guān)注
關(guān)注
47文章
2698瀏覽量
50845 -
ch32
+關(guān)注
關(guān)注
0文章
74瀏覽量
1047
發(fā)布評論請先 登錄
【RTT大賽作品連載】CH32V103 USBHID鍵盤鼠標(biāo)
CH32V103數(shù)據(jù)手冊
同系列比如103系列,CH32V103系列與CH32F103有哪些區(qū)別?
CH32V103基礎(chǔ)教程1-新建工程
CH32V103基礎(chǔ)教程2-GPIO庫函數(shù)介紹
CH32V103基礎(chǔ)教程77-USART-指令控制LED燈
CH32V103基礎(chǔ)教程78-USART-空閑中斷
RISC-V MCU應(yīng)用開發(fā)教程之CH32V103

CH32V103系列MCU內(nèi)部FLASH讀寫操作方式

評論