trucyw 发表于 2023-4-4 20:31

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

板子终于修好了,又可以和大家一起学习(吹水)了
今天就和大家一起来看下CH32V307的GPIO控制和Cortex 内核的GPIO是否有啥不一样
在这里就不再介绍开发环境的安装了,因为在这个社区已经有很多帖子在介绍,就不浪费大家时间了
接下来就开始今天的正题了
我们来看下官网下载下来的资料都有些啥(https://www.wch.cn/products/CH32V307.html)
https://file.**/web2/M00/9C/85/poYBAGQq7XSAVLPBAAF_XnNYPis127.png
资源还是很丰富,GPIO这个是我们今天的重点
找了好久才发现LED没有直接连接GPIO,所以我们就可以利用任意的IO都可以
https://file.**/web2/M00/9D/08/pYYBAGQq7XWAWZFzAAiMWIUuRH0436.png
打开project的界面和我们之前熟悉的keil差不多
https://file.**/web2/M00/9C/85/poYBAGQq7XWAKNH_AAMNXOMJP34237.png
今天我们就用GPIOA 的1和2来控制两颗LED灯珠
第一次下载程序我们可能会遇到以下提示
https://file.**/web2/M00/9D/08/pYYBAGQq7XWAJrRoAAAPewr2TXo952.png
按照以下步骤操作就可以解决
https://file.**/web2/M00/9C/85/poYBAGQq7XWAa12JAAIWAVOaDns808.png
接下来就可以直接下载了
https://file.**/web2/M00/9C/85/poYBAGQq7XWABYOaAABHd2vhk9c720.png
下载完成就可以看到板子上的两个灯在交替闪烁
执行代码如下
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控制蜂鸣器
点灯视频

mikewalpole 发表于 2023-5-5 23:16

stm32和ch32用起来有差别吗

belindagraham 发表于 2023-5-6 00:09

可以直接mrs驱动操作的。            

trucyw 发表于 2023-5-6 06:37

mikewalpole 发表于 2023-5-5 23:16
stm32和ch32用起来有差别吗

代码上看,差异不大

kkzz 发表于 2023-5-7 13:59

proteus支持CH32V307吗

yangxiaor520 发表于 2023-5-14 20:05

沁恒是死磕RISC-V啊
页: [1]
查看完整版本: 菜鸟学习功能强大CH32V307之GPIO LED点亮