问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CH582M入门:GPIO配置详解

创作时间:
作者:
@小白创作中心

CH582M入门:GPIO配置详解

引用
CSDN
1.
https://blog.csdn.net/sinat_58149788/article/details/130597250

本文将介绍CH582M微控制器的GPIO配置方法,包括输入输出模式的配置以及实际应用案例。通过点亮板载LED灯的实例,帮助读者快速入门CH582M的GPIO开发。

一、了解CH582M资源

CH582M是一款功能强大的微控制器,具有充足的Flash和SRAM资源,丰富的外设接口,并支持蓝牙功能。正点原子的手持电烙铁就是使用CH5x系列MCU作为主控,而博主也曾使用STM32F103C8T6开发过类似项目。

二、认识GPIO及配置

1.认识GPIO

GPIO(General Purpose Input Output)即通用输入输出,可以通过配置不同的模式来实现不同的功能。对于不了解GPIO的读者,可以参考STC32G的相关资料。

不同模式的配置代码如下:

/*********************************************************************
 * @fn      GPIOB_ModeCfg
 *
 * @brief   GPIOB端口引脚模式配置
 *
 * @param   pin     - PB0-PB23
 * @param   mode    - 输入输出类型
 *
 * @return  none
 */
void GPIOB_ModeCfg(uint32_t pin, GPIOModeTypeDef mode)
{
    switch(mode)
    {
        case GPIO_ModeIN_Floating: //浮空输入模式
            R32_PB_PD_DRV &= ~pin;
            R32_PB_PU &= ~pin;
            R32_PB_DIR &= ~pin;
            break;
        case GPIO_ModeIN_PU:  //上拉输入模式
            R32_PB_PD_DRV &= ~pin;
            R32_PB_PU |= pin;
            R32_PB_DIR &= ~pin;
            break;
        case GPIO_ModeIN_PD: //下拉输入模式
            R32_PB_PD_DRV |= pin;
            R32_PB_PU &= ~pin;
            R32_PB_DIR &= ~pin;
            break;
        case GPIO_ModeOut_PP_5mA: //5ma推挽输出模式
            R32_PB_PD_DRV &= ~pin;
            R32_PB_DIR |= pin;
            break;
        case GPIO_ModeOut_PP_20mA://20ma强推挽输出模式
            R32_PB_PD_DRV |= pin;
            R32_PB_DIR |= pin;
            break;
        default:
            break;
    }
}

2.GPIO配置(输出模式,点灯大师)

这里将介绍如何点亮板载的PB4 LED灯。

首先需要打开一个工程文件,然后配置PB4引脚为20mA强推挽输出模式。代码如下:

#include "CH58x_common.h"
//#include "bmp.h"
//#include "oled.h"
/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
//u8  Image_BW[4736];
void main()
{
   //这里是配置的是MCU的时钟,这里配置为60MHZ,
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    //配置GPIOB的Pin_4引脚为20mA强推挽输出模式
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_20mA);
    while(1)
    {
        GPIOB_SetBits(GPIO_Pin_4); //设置PB4为高电平
        DelayMs(1000);            //ms延时
        GPIOB_ResetBits(GPIO_Pin_4); //设置PB4为低电平
        DelayMs(1000);			//ms延时
    }
}

编译成功后,使用沁恒的烧录软件WCHISPTool_CH57x-58x进行下载。具体步骤如下:

  1. 断电并按住板上的BOOT按钮
  2. 上电后选择设备
  3. 选择编译生成的hex文件
  4. 点击下载

2.GPIO配置(输入模式,点灯大师)

接下来介绍如何使用GPIO的输入模式控制LED灯。代码如下:

#include "CH58x_common.h"
#include "bmp.h"
#include "oled.h"
/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
u8  Image_BW[4736];
void main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_20mA);
    GPIOB_ModeCfg(GPIO_Pin_3,GPIO_ModeIN_PU); //上拉输入模式
    while(1)
    {
        if(GPIOB_ReadPortPin(GPIO_Pin_3) == 1){
            GPIOB_SetBits(GPIO_Pin_4);
        }else{
            GPIOB_ResetBits(GPIO_Pin_4);
        }
//        GPIOB_SetBits(GPIO_Pin_4);
//        DelayMs(1000);
//        GPIOB_ResetBits(GPIO_Pin_4);
//        DelayMs(1000);
    }
}

总结

本文介绍了CH582M微控制器的GPIO配置方法,包括输入输出模式的配置以及实际应用案例。通过点亮板载LED灯的实例,帮助读者快速入门CH582M的GPIO开发。需要注意的是,CH582M的ADC使用的是浮空输入模式,且没有模拟输入模式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号