菜鸟学习功能强大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控制蜂鸣器
点灯视频
stm32和ch32用起来有差别吗 可以直接mrs驱动操作的。 mikewalpole 发表于 2023-5-5 23:16
stm32和ch32用起来有差别吗
代码上看,差异不大 proteus支持CH32V307吗 沁恒是死磕RISC-V啊
页:
[1]