[CH582M入门第一步]GPIO配置



一、了解CH582M资源?

可以看出他的Flash和SRAM还是可以的,外设也很多,并且支持蓝牙,而且正点原子的手持电烙铁就是用的CH5x系列的MCU做的主控,博主我也做过手持电烙铁,只是我用的是stm32F103C8t6做的。程序是用标准库写的,好了废话不多说现在开始介绍CH582M的GPIO。

在这里插入图片描述

二、认识GPIO及配置

1.认识GPIO

这个不懂可以去看看STC32G的专栏。GPIO就是通用输入输出,可以通过配置不同的模式来达到不同的功能。
不同模式看下面代码注解

/*********************************************************************
 * @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控制的LED灯,
这里配置就比较简单了,玩过stm32的都知道配置LED灯我们是需要用到推挽输出模式的,这里也一样我们选择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延时

    }

}

ok这里写完了就点编译
在这里插入图片描述
编译成功过后,我们要打开沁恒的烧录软件WCHISPTool_CH57x-58x
在这里插入图片描述
这里我们是使用的是USB的下载方式
然后我们需要先断电然后按住板上的BOOT按钮,然后在上电,这样我们就有设备列表
在这里插入图片描述
然后点击目标程序文件1文件夹图形然后选择我们编译好的文件的hex文件,然后点击下载,ok,你的第一个成就点灯大师完成。

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

#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);

    }

}


总结

这就是GPIO的一些配置了,很简单,对了,CH582M的ADC是使用的是浮空输入,并且CH582M好像没有模拟输入模式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片有机机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值