菜鸟学习功能强大CH32V307之GPIO LED点亮 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

trucy 关注 私信

菜鸟学习功能强大CH32V307之GPIO LED点亮

闪烁LED

本帖最后由 trucy 于 2023-4-4 20:22 编辑

板子终于修好了,又可以和大家一起学习(吹水)了
今天就和大家一起来看下CH32V307的GPIO控制和Cortex 内核的GPIO是否有啥不一样
在这里就不再介绍开发环境的安装了,因为在这个社区已经有很多帖子在介绍,就不浪费大家时间了
接下来就开始今天的正题了
我们来看下官网下载下来的资料都有些啥(https://www.wch.cn/products/CH32V307.html)

资源还是很丰富,GPIO这个是我们今天的重点
找了好久才发现LED没有直接连接GPIO,所以我们就可以利用任意的IO都可以

打开project的界面和我们之前熟悉的keil差不多

今天我们就用GPIOA 的1和2来控制两颗LED灯珠
第一次下载程序我们可能会遇到以下提示

按照以下步骤操作就可以解决

接下来就可以直接下载了

下载完成就可以看到板子上的两个灯在交替闪烁
执行代码如下
void GPIO_Toggle_INIT(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
    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();
    USART_Printf_Init(115200);
    printf("SystemClk:%d
", SystemCoreClock);
    printf("GPIO Toggle TEST
");
    GPIO_Toggle_INIT();
    while(1)
    {
        GPIO_WriteBit(GPIOA, GPIO_Pin_1, 1);
        GPIO_WriteBit(GPIOA, GPIO_Pin_2, 0);
        Delay_Ms(1500);
        GPIO_WriteBit(GPIOA, GPIO_Pin_1, 0);
        GPIO_WriteBit(GPIOA, GPIO_Pin_2, 1);
        Delay_Ms(500);
    }
}

从这代码看GPIO操作和大家熟知的Cortex没有区别
今天到这里就告一段落了,后面将测试下PWM控制蜂鸣器

更多回帖

×
发帖