> 文章列表 > 【WCH】基于Keil环境CH32F203 GPIO点灯实验

【WCH】基于Keil环境CH32F203 GPIO点灯实验

【WCH】基于Keil环境CH32F203 GPIO点灯实验

【WCH】基于Keil环境CH32F203 GPIO点灯实验


  • 📌相关篇《关于CH32F203程序下载方式说明》

✨如果是首次入门使用,请先看上面的相关篇内容,了解其下载相关事宜后,再进来学习。

GPIO模式介绍

  • 🌿在应用手册的第十章介绍GPIO。

GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏
功能。GPIO 口还可以复用成其他功能。

  • 🌴GPIO模式:
  • 浮空输入
  • 上拉输入
  • 下拉输入
  • 模拟输入
  • 开漏输出
  • 推挽输出
  • 复用功能的输入和输出
    【WCH】基于Keil环境CH32F203 GPIO点灯实验
    GPIO外部中断,复用功能和其他单片机差不多。有一个特别的就是锁定机制功能。
  • 🔖锁定机制

锁定机制可以锁定 IO 口的配置。经过特定的一个写序列后,选定的 IO 引脚配置将被锁定,在下
一个复位前无法更改。

外设的 GPIO 设置一览表:

【WCH】基于Keil环境CH32F203 GPIO点灯实验

📝点灯程序代码

  • 📋参考CH32F203 官方的SDK固件包,中的GPIO案例修改而来,修改了IO口状态翻转的相关代码。
#include "debug.h"/* Global define *//* Global Variable *// @fn      GPIO_Toggle_INIT @brief   Initializes GPIOA.0 @return  none*/
void GPIO_Toggle_INIT(void)
{GPIO_InitTypeDef  GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);
}/ @fn      main @brief   Main program. @return  none*/
int main(void)
{uint8_t i = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);Delay_Init();USART_Printf_Init(115200);printf("SystemClk:%d\\r\\n", SystemCoreClock);  //9600 0000printf("GPIO Toggle TEST2\\r\\n");GPIO_Toggle_INIT();while (1){Delay_Ms(250);Delay_Ms(250);GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)));i = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13);GPIO_WriteBit(GPIOC, GPIO_Pin_13, (i == 0) ? Bit_SET : Bit_RESET);Delay_Ms(250);Delay_Ms(250);printf("Hello World! \\r\\n");//}
}