闪烁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控制蜂鸣器
|