拿到一块新的开发板,我们要做的第一件事,自然就是单片机入门—点灯。下面我就来记录下我用这块开发板的点灯操作。
一、工程创建
我们观察官方的例程,可以很明显看出,其与STM32是很类似的,学习过STM32的可以很容易上手,该工程中我们也可以看到启动文件和相关库函数,说明我们可以很容易编写相关程序。但库函数在哪,怎么添加,我还是一头雾水,因此,我们先来创一个工程试试水。然而我惊奇的发现,mounriver studio 这个软件非常的强大,就像将keil和cubmx结合一样。
(1)打开mounriver studio,点击新建,工程,出现如下界面
(2)工程名任意,模板选CH32V307[RISC-V],型号CH32V307VCT6。
点击完成。
(3)我们点击旁边的项目资源管理器,展开项目树,点开USER文件夹,点击main.c,我们可以很惊喜的发现,你仅仅创建了一个工程,这个软件就帮你添加了启动文件、库函数、时钟配置等等,实在太贴心了。
二、代码编写
观察官方例程后,发现其对于GPIO口的操作是很类似的,初始化结构体,调用相关库函数,使得GPIO口电平变化。
本次我们选择PC13和PB10两个GPIO口进行电平操作。为了方便看到效果,我们利用板载的两个LED灯进行测试。
(1)看看原理图
由此可以,灯需要接低电平引脚才可以点亮。
硬件接法:
J3的LED1和LED2使用杜邦线接到J4的PB10和PC13引脚。
(2)最终代码如下:
/********************************** (C) COPYRIGHT *******************************
* File Name : main.c
* Author : WCH
* Version : V1.0.0
* Date : 2021/06/06
* Description : Main program body.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
/*
*@Note
USART Print debugging routine:
USART1_Tx(PA9).
This example demonstrates using USART1(PA9) as a print debug port output.
*/
#include "debug.h"
/* Global typedef */
/* Global define */
/* Global Variable */
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*********************************************************************
* @fn main
*
* @brief Main program.
*
* @return none
*/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemCoreClockUpdate();
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
GPIO_Toggle_INIT();
while(1)
{
Delay_Ms(250);
GPIO_WriteBit(GPIOC, GPIO_Pin_13,SET );
GPIO_WriteBit(GPIOB, GPIO_Pin_10,RESET );
Delay_Ms(250);
GPIO_WriteBit(GPIOC, GPIO_Pin_13,RESET );
GPIO_WriteBit(GPIOB, GPIO_Pin_10,SET );
}
}
(3)点击编译,观察是否还有错误。
三、程序下载
(1)编译完成后,其会生成hex文件。
(2)打开烧录WCHISPStudio,选择相关芯片。使用USB连接电脑与开发板,P6或P7都可。如下图所示,记住boot脚的操作,可以参见我上一篇:http://t.csdn.cn/OT2tE
(3)点击解除代码保护,点击下载。
四、板子验证
欢迎大家尝试,有任何问题,请留言或私信。