標(biāo)題: 邊干邊學(xué)CH32V103單片機(jī)-從“點(diǎn)亮LED開始認(rèn)識(shí)CH32V103單片機(jī) [打印本頁]

作者: 隨緣57    時(shí)間: 2022-4-9 19:32
標(biāo)題: 邊干邊學(xué)CH32V103單片機(jī)-從“點(diǎn)亮LED開始認(rèn)識(shí)CH32V103單片機(jī)
南京沁恒出品的CH32V103系列單片機(jī),采用完全開源的RISC-V架構(gòu),對(duì)標(biāo)STM32F103系列單片機(jī)。本人出于對(duì)純國產(chǎn)32位單片機(jī)的好奇,開始學(xué)習(xí)這款單片機(jī)。
學(xué)習(xí)單片機(jī)的最好方法就是邊干邊學(xué)。經(jīng)過仔細(xì)閱讀沁恒公司網(wǎng)站的信息,選擇沁恒廠家出品的CH32V103R8T6核心板和WCH-Link下載器套餐作為硬件平臺(tái),以及MounRiver作為集成開發(fā)環(huán)境,開始了學(xué)習(xí)旅程。
學(xué)習(xí)軟件編程都是以”Hello World !”開始,學(xué)習(xí)單片機(jī)則都是從“點(diǎn)亮LED”開始,本人也不能免俗。將核心板與WCH-Link用杜邦線連接,再插入筆記本電腦的USB口。打開MounRiver,在自己習(xí)慣的位置新建一個(gè)P-001工程項(xiàng)目,參考廠家提供的GPIO例程,按照以下代碼修改User子目錄下的main.c文件,
/*
*@Note
    使用沁恒CH32V103R8T6核心板,板上排針連接為PA0接LED1或LED2
    通用MUC第一個(gè)實(shí)例,“點(diǎn)亮LED”
*/

#include "debug.h"

int main(void)
{
    u8 i=0; //端口變量,0-低電位,1-高電位。調(diào)用GPIO_WriteBit()函數(shù)時(shí)才能作用于PA0端口

    Delay_Init(); //初始化延時(shí)函數(shù)

    GPIO_InitTypeDef GPIO_InitStructure = {0}; //聲明GPIO結(jié)構(gòu)體定義
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口時(shí)鐘
    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上電后自動(dòng)為低電位,LED點(diǎn)亮

    while(1)
    {
        Delay_Ms(500); //延時(shí)0.5秒
        (i == 0) ? (i = Bit_SET) : (i = Bit_RESET); //取反語句,即將變量i的布爾值取反
        GPIO_WriteBit(GPIOA, GPIO_Pin_0, i); //LED間隔0.5秒閃爍

    }
}
保存好修改結(jié)果,選擇項(xiàng)目菜單下全部構(gòu)建,順利通過后選擇閃存菜單下的下載,即可將編譯好的P-001.hex文件下載到核心板。
將核心板上的PA0排針與LED1排針用杜邦線連接,即可看到板載的LED1閃爍。結(jié)合裴曉芳主編的《RISC-V架構(gòu)嵌入式原理與應(yīng)用——CH32V103單片機(jī)編程與項(xiàng)目實(shí)踐》一書,可以了解GIPO的設(shè)置和簡單應(yīng)用。
在上述代碼中,多設(shè)置了IO口PA1,主要目的是展示設(shè)置多個(gè)IO口的方法,實(shí)際運(yùn)行結(jié)果是LED1接PA1時(shí)會(huì)長亮而不閃爍。如果沒有設(shè)置PA1,連接LED時(shí)不會(huì)亮,說明PA1未被激活生效。

在實(shí)際應(yīng)用項(xiàng)目中使用GPIO時(shí)需要注意以下問題,
1、在推挽輸出模式下,每個(gè)IO口最大拉電流和灌電流不應(yīng)超過20mA,直接驅(qū)動(dòng)LED或光耦時(shí),通?刂圃1.5~3mA左右。如果需要控制大功率外設(shè),可以通過IO口控制MOS管的柵極電壓,再控制外設(shè)。
2、單片機(jī)芯片的最大工作電流不應(yīng)超過50mA,多個(gè)IO口控制外設(shè)時(shí),一定要注意芯片的最大工作電流。

  程序代碼都在附件中,就不注水了。

MounRiver Studio代碼51hei附件下載: P-001.rar (553.75 KB, 下載次數(shù): 17)

作者: wukouyyq    時(shí)間: 2022-4-15 14:04
還沒有學(xué)過這種的單片機(jī),只在學(xué)STC52RC。接下來想學(xué)這種的單片機(jī)了。

弱弱地問一句,GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度

這個(gè)是IO口的速度,50MHZ,這么快能看到LED燈閃嗎?

我不懂,還沒學(xué)過,不要見怪呀
作者: sanmaodeai    時(shí)間: 2022-4-17 21:47
50M你覺得能看到嗎?人眼的極限大概也就50Hz
作者: 山烏木    時(shí)間: 2022-5-8 11:11
人眼的極限大概也就30Hz,,,,,膠片電影的幀速
作者: sxd2529427292    時(shí)間: 2022-5-13 10:40
wukouyyq 發(fā)表于 2022-4-15 14:04
還沒有學(xué)過這種的單片機(jī),只在學(xué)STC52RC。接下來想學(xué)這種的單片機(jī)了。

弱弱地問一句,GPIO_InitStructur ...

這個(gè)是指單片機(jī)管腳的響應(yīng)速度,需要控制LED閃爍的時(shí)候用Delay_Ms()就好了
作者: csgtli    時(shí)間: 2022-6-22 12:40
接觸過STM32的很容易就上手,這個(gè)單片機(jī)在一般應(yīng)用場合完全可低替STM32B .我現(xiàn)在的全部產(chǎn)品都改成了WCH的了
作者: zzzzxxxxp    時(shí)間: 2022-8-16 10:54
csgtli 發(fā)表于 2022-6-22 12:40
接觸過STM32的很容易就上手,這個(gè)單片機(jī)在一般應(yīng)用場合完全可低替STM32B .我現(xiàn)在的全部產(chǎn)品都改成了WCH的了

正在找這方面的資料,感謝
作者: fqc168    時(shí)間: 2022-8-22 10:16
這個(gè)芯片有什么優(yōu)勢(shì)???穩(wěn)定性如何
作者: fqc168    時(shí)間: 2022-9-21 09:27
目前發(fā)現(xiàn)這個(gè)芯片的功能還是比較原始,很多功能不完善,相當(dāng)于一個(gè)很原始的單片機(jī)
作者: csgtli    時(shí)間: 2022-10-13 11:16
fqc168 發(fā)表于 2022-8-22 10:16
這個(gè)芯片有什么優(yōu)勢(shì)???穩(wěn)定性如何

批量時(shí)有的芯片SWD無法下載,其他穩(wěn)定,沒有什么問題,廠家提供的例程編寫風(fēng)格與STM32的基本一致
作者: shy332    時(shí)間: 2024-4-21 09:34
開發(fā)環(huán)境用的是什么?沁恒自己的嗎?





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1