首页 > 其他分享 >关于CH32系列MCU GPIO使用

关于CH32系列MCU GPIO使用

时间:2024-12-19 14:09:36浏览次数:3  
标签:输出 映射 CH32 引脚 IO 使用 GPIO MCU

1、关于CH32V103 PD0/PD1引脚使用

PD0、PD1引脚为外部HSE晶振引脚,作为普通GPIO使用的时候注意:需要关闭外部晶振,开启复用时钟,使用HSI配置系统主频,否则无法正常运行。

 

 

2、关于CH32V003 PA1/PA2引脚时用

PA1、PA2引脚可以作为外部晶振引脚使用,注意若要作为普通GPIO使用时,需要使用内部晶振配置系统主频,否则会导致IO输出不正常。此外注意不需要开启复用时钟。

 

3、关于CH32X035 CC引脚(PC14、PC15)作为普通IO引脚配置上拉注意事项

CC引脚作为普通IO配置上拉时,若按照正常上拉配置,上拉电压大概2.2V左右。若想上拉电压达到正常供电电压3.3V,则需要进行如下配置,如下图:

注意要开启复用时钟,且需要对AFIO控制寄存器的位8置1,如下图:

 

4、关于CH32 GPIO合封引脚使用注意事项

CH32系列某些小封装芯片存在合封引脚,如下图。以下图8脚为例,为PD4、PD5、PD1的合封引脚,其中PD1引脚还作为SWIO下载引脚。若要使用PD4引脚作为普通IO输出高低电平,注意在进行程序配置时需要注意:
(1)PD4引脚按照GPIO输出配置;
(2)合封引脚PD5和PD1要配置为浮空输入模式;
(3)PD1同时作为SWIO下载引脚,要注意关闭SDI下载功能,要注意开启复用时钟,即AFIO时钟。

 

5、关于GPIO引脚复用功能使用注意事项

使用GPIO引脚作为某外设复用功能重映射时,以下图为例

注意,引脚只能按照上表格对应列引脚使用,比如复用时,可按照PA15、PB3、PA2、PA3使用,或按照PA0、PA1、PB10、PB11使用,不能PA15、PA1、PA2、PB11这种交叉使用。

 

6、关于GPIO引脚作为EXTI引脚使用

GPIO引脚作为EXTI使用时,若使用PA引脚可以不开AFIO时钟,若是使用PB、PC等的引脚,要开AFIO时钟。

 

7、关于CH32V003复位引脚PD7作为GPIO使用配置说明

具有两种配置方式:
1、直接通过操作用户字进行配置,如下图,注意要FLASH解锁;

2、直接通过WCH-LinkUtility工具配置,如下图,下载时选择对应的选项即可

 

8、关于CH32系列MCU在输出模式下获取其输出状态

当IO配置成输出模式时,通过对输入数据寄存器的读访问可得到I/O状态。在STM32参考手册以及CH32应用手册中都有对其的介绍,如下图:

在开漏模式下,对输入数据寄存器的读访问可获取到当前IO状态(输出1受外部上拉电阻影响);
在推挽模式下,对输出数据寄存器的读访问可获取到最后一次写的值。
注意,推挽输出模式下,读取输出数据寄存器只能读到该IO口最后一次设定的输出电平状态,而不一定是实际的IO口状态。比如说,写寄存器使IO输出低,但外部电路使其强拉到高,这时读输出数据寄存器只能读到低,因为最后一次写操作就是低。
注意,读最后一次设定的输出电平状态,在推挽输出模式时,除了GPIOx_ODR,读GPIOx_IDR也是一样的(假定外部电路不影响其输出电平)。(读GPIOx_ODR寄存器用的是GPIO_ReadOutputDataBit函数,读GPIOx_IDR寄存器用的是GPIO_ReadInputDataBit函数)

 

9、关于GPIO部分重映射以及完全重映射的理解

关于重映射功能中ETR后面的数字编号,可参考下图理解,表示不同的引脚以及是部分重映射还是完全重映射。

以TIM2为例,可以看到默认映射对应的引脚为PA0、PA1、PA2、PA3;部分重映射的引脚为PA15、PB3、PA2、PA3,只改变了部分引脚,所以叫部分重映射;设置为完全重映射时为PA15,PB3,PB10和PB11,全部的引脚都改变了,所以叫完全重映射。

 关于对应引脚的使用,若只使用CH1,其他通道引脚不受影响;在使用时需按照竖列引脚进行配对。

 

10、关于GPIO引脚上电抖动问题

因为单片机上电初始化阶段(未完成初始化时)IO是浮空输入状态,若要避免抖动,需要在外部加上拉电阻给它一个确定的电平。

 

 

标签:输出,映射,CH32,引脚,IO,使用,GPIO,MCU
From: https://www.cnblogs.com/liaigu/p/18617140

相关文章

  • 痞子衡嵌入式:MCUXpresso IDE下C++源文件中嵌套定义的复合数据类型命名空间认定
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpressoIDE下C++源文件中嵌套定义的复合数据类型命名空间认定。痞子衡之前写过一篇文章《MCUXpressoIDE下添加C++源文件进SDK工程编译的方法》,通过这篇文章我们知道嵌入式工程里是能够支持C源文件......
  • 调试Debug,读,写 GPIO 寄存器(含实例代码)
    以STM32G070CBT6PA8为例注:下面调试界面的打开方式为下面图中调试界面中的寄存器仅用于指明具体位置,并不代表实际的实验现象本文涉及寄存器的读写操作,不熟悉的可以移步STM32寄存器读写操作-CSDN博客MODER寄存器GPIOA->MODER作用:配置PA8的......
  • freeswitch(开启支持MCU视频会议,使用mod_av模块)
    亲测版本centos7.9系统–》freeswitch1.10.9本人freeswitch安装路径(根据自己的路径进入)/usr/local/freeswitch/etc/freeswitch场景说明:有些场景想使用视频会议MCU融合画面进行开会使用方法:第一步:下载插件yuminstall-yepel-releaseyuminstall......
  • 最全Arduino的GPIO和基础外设介绍,告别新手期,成为点灯大师(一)
         很多时候学习很多外设和传感器的使用,但是对开发板的了解却并不深入,本文章深入解析arduinouno这块开发板.知己知彼百战不殆.1.arduino的引脚图极其介绍1.1直流电源插孔-可以使用电源插孔为Arduino开发板供电。电源插孔通常连接到一个适配器。开发板的供电范围......
  • MCU系统中软硬件降低功耗的几种方法
    此篇文章在2023年12月28日被记录1、前言MCU系统中的低功耗功能非常重要,如果你的MCU系统供电方式是连接市电,降低功耗可以减少发热,延长使用寿命;如果你的设备是移动端设备,使用小型电池供电,那么低功耗的意义就更大了,更低的功耗可以延长使用时长,提高用户体验。2、硬件降低功耗的......
  • MCU如何使用fopen fread fwrite fclose等函数?
    目录MCU如何使用fopenfreadfwritefclose等函数?1读写文件改为读写数组2文件操作函数2.1fopen()2.2fclose()2.3fread()2.4fwrite()2.5fgetc()2.6fgets()2.7fputc()2.8fputs()2.9fseek()2.10ftell()2.11rewind()2.12feof()2.13fprintf()2.14fscanf()3单元测试MC......
  • 嵌入式中防linux的通用MCU系统
        ​大家好,今天分享一个仿linux分层架构实现的mcu通用系统,该项目的创建方便芯片级切换以及多产品线开发。《一个基于分层架构实现的MCU通用系统》项目整体框图项目亮点分层架构,清晰高效:usal_mcu采用仿Linux的分层架构设计,将系统划分为驱动层、系统层和应用......
  • 零知开源——使用 GPIO 模拟时序驱动 WS2812B LED 灯带
    利用零知增强版的GPIO模拟时序       在本教程中,我们将探讨如何使用零知增强版的GPIO接口来模拟WS2812BLED灯带的信号传输时序,从而实现对单色或多彩LED灯带的控制。这种技术允许我们避开专用驱动库,直接与硬件进行交互,理解并掌握WS2812B的通信机制。一、工......
  • 以太网接入 MCU 方案
    文章目录方案一:外置以太网控制器方案二:集成以太网功能的MCU方案三:以太网扩展板/模块选择建议以太网接入MCU方案方案一:外置以太网控制器概述:外置以太网控制器方案通过将独立的以太网控制器模块与MCU连接,实现网络通信功能。这种方案灵活性高,适用于多种MCU平台。......
  • 不进入halt状态可以操作mcu的flash吗
    我先来实际测试一下,使用的软件是SPAnalyzer(下载链接https://std.plus)下载可执行的bin文件,确保CPU进入running状态在cpurunning状态下尝试擦除操作先执行halt操作再尝试擦除操作在很多MCU中,操作Flash(例如擦除、写入或修改Flash存储)通常需要将CPU进入一个“暂停”或......