|
南京沁恒出品的CH32V103系列單片機,采用完全開源的RISC-V架構(gòu),對標(biāo)STM32F103系列單片機。本人出于對純國產(chǎn)32位單片機的好奇,開始學(xué)習(xí)這款單片機。
學(xué)習(xí)單片機的最好方法就是邊干邊學(xué)。經(jīng)過仔細(xì)閱讀沁恒公司網(wǎng)站的信息,選擇沁恒廠家出品的CH32V103R8T6核心板和WCH-Link下載器套餐作為硬件平臺,以及MounRiver作為集成開發(fā)環(huán)境,開始了學(xué)習(xí)旅程。
學(xué)習(xí)軟件編程都是以”Hello World !”開始,學(xué)習(xí)單片機則都是從“點亮LED”開始,本人也不能免俗。將核心板與WCH-Link用杜邦線連接,再插入筆記本電腦的USB口。打開MounRiver,在自己習(xí)慣的位置新建一個P-001工程項目,參考廠家提供的GPIO例程,按照以下代碼修改User子目錄下的main.c文件,
/*
*@Note
使用沁恒CH32V103R8T6核心板,板上排針連接為PA0接LED1或LED2
通用MUC第一個實例,“點亮LED”
*/
#include "debug.h"
int main(void)
{
u8 i=0; //端口變量,0-低電位,1-高電位。調(diào)用GPIO_WriteBit()函數(shù)時才能作用于PA0端口
Delay_Init(); //初始化延時函數(shù)
GPIO_InitTypeDef GPIO_InitStructure = {0}; //聲明GPIO結(jié)構(gòu)體定義
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //配置PA0、PA1端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA端口,PA0、PA1上電后自動為低電位,LED點亮
while(1)
{
Delay_Ms(500); //延時0.5秒
(i == 0) ? (i = Bit_SET) : (i = Bit_RESET); //取反語句,即將變量i的布爾值取反
GPIO_WriteBit(GPIOA, GPIO_Pin_0, i); //LED間隔0.5秒閃爍
}
}
保存好修改結(jié)果,選擇項目菜單下全部構(gòu)建,順利通過后選擇閃存菜單下的下載,即可將編譯好的P-001.hex文件下載到核心板。
將核心板上的PA0排針與LED1排針用杜邦線連接,即可看到板載的LED1閃爍。結(jié)合裴曉芳主編的《RISC-V架構(gòu)嵌入式原理與應(yīng)用——CH32V103單片機編程與項目實踐》一書,可以了解GIPO的設(shè)置和簡單應(yīng)用。
在上述代碼中,多設(shè)置了IO口PA1,主要目的是展示設(shè)置多個IO口的方法,實際運行結(jié)果是LED1接PA1時會長亮而不閃爍。如果沒有設(shè)置PA1,連接LED時不會亮,說明PA1未被激活生效。
在實際應(yīng)用項目中使用GPIO時需要注意以下問題,
1、在推挽輸出模式下,每個IO口最大拉電流和灌電流不應(yīng)超過20mA,直接驅(qū)動LED或光耦時,通?刂圃1.5~3mA左右。如果需要控制大功率外設(shè),可以通過IO口控制MOS管的柵極電壓,再控制外設(shè)。
2、單片機芯片的最大工作電流不應(yīng)超過50mA,多個IO口控制外設(shè)時,一定要注意芯片的最大工作電流。
程序代碼都在附件中,就不注水了。
MounRiver Studio代碼51hei附件下載:
P-001.rar
(553.75 KB, 下載次數(shù): 17)
2022-4-9 19:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|