HC32F460_GPIO驱动库

注意: 
        Mcu的在线调试接口有JTAG、SW两类,如采用SW接口,则JTAG对应的TDI、TDO_SWO、TRST管脚则可作为普通IO使用。配置代码如下:

	PORT_DebugPortSetting(TDI,Disable);
	PORT_DebugPortSetting(TDO_SWO,Disable);
	PORT_DebugPortSetting(TRST,Disable);	

0. 测试环境

        测试Mcu        :HC32F460PETB|
        底层库版本    :hc32f460_ddl_Rev2.1.0
        库名               :DrvMcu

1. 设计说明

        建立驱动库GPIO配置表,定义该驱动库对外输出的常规IO口以及相应初始配置。

#define  DRVMIO_DIR_IN			0			//定义IO口初始化进出方向
#define  DRVMIO_DIR_OUT		    1

#define  DRVMIO_STATE_L		    0			//定义IO口初始化高低状态
#define  DRVMIO_STATE_H		    1
#define  DRVMIO_STATE_IDLE		0xFF

typedef struct _STDRVMIOMAP
{//IO口配置信息
	unsigned short	usMcuPinNo;				//Mcu的全局IO编号
	unsigned char	ucDir;					//IO的方向,输入/输出
	unsigned char	ucInitState;			//IO的初始状态,高/低
}STDRVMIOMAP;

注:
        usMcuPinNo : 为Mcu的GPIO定义了一个全局编号,即:0~15对应PortA的0~15;16~31对应PortB的0~15,以此类推。可通过宏定义:

  • const en_port_t m_pstAryPort[]={
    		PortA,
    		PortB,
    		PortC,
    		PortD,
    		PortE,
    	};
    #define DRVM_GETPIN(pin)	(1UL<<(pin&0x0F))
    #define DRVM_GETPORT(pin)	(m_pstAryPort[pin>>4])
    

             m_stIOMap数组的数组序号,即是在DrvM库中该IO口对外输出IO口号,命名为DrvMPinNo,此处定义了DrvMPinNo与McuPinNo之间的对应关系。

    • 2. 全局变量

unsigned short	 m_usDrvMIONum
<think>好的,我现在需要帮助用户找到关于HC32F460微控制器的GPIO配置方法、示例和教程。根据用户提供的引用资料,我需要结合这些信息来整理出一个清晰的步骤指南。 首先,用户提到了引用[1],里面有一个GPIO输出例程的路径,应该是官方提供的示例代码。这可能包含GPIO初始化的代码结构。然后引用[2]是关于在KEIL平台下新建工程的笔记,里面提到了芯片型号和引脚数,这可能涉及工程配置和引脚选择。引用[3]是ADC+DMA实验中的GPIO配置部分,展示了如何将GPIO引脚设置为模拟输入模式,这可能对GPIO模式设置有帮助。 我需要将这些引用中的信息整合起来,分步骤讲解GPIO配置方法。首先可能需要新建工程,选择正确的芯片型号,这点在引用[2]中提到。然后,GPIO初始化结构体在引用[1]和[3]中都有涉及,需要说明如何设置引脚属性、方向、驱动能力等。接着,配置时钟使能,这可能是在引用中没有直接提到,但通常是必要步骤。然后,应用模式配置,比如输出高低电平或者输入模式,这部分引用[1]的输出例程和引用[3]的模拟输入模式可以作为例子。最后,编译和下载的步骤可能需要参考引用[2]中的工程设置。 另外,用户可能需要具体的代码示例,比如设置某个引脚为推挽输出,并控制其电平,这可以结合引用[1]中的例程和引用[3]中的GPIO_Init函数来编写。需要确保代码中的语法正确,比如结构体初始化、函数调用等。同时,注意事项部分需要提醒用户时钟配置、复用功能、防抖动处理等,这些可能来自官方文档或常见问题。 最后,生成的相关问题需要基于用户可能的后续需求,比如输入模式配置、复用功能、中断配置等,这些都是在GPIO使用中常见的问题,可以引导用户进一步探索。</think>以下是根据华大HC32F460芯片资料整理的GPIO配置方法详解,结合官方驱动库和示例代码说明: ### 一、GPIO配置步骤 1. **新建工程** - 在Keil中建立工程时选择HC32F460JETA芯片型号(48/100pin需对应)[^2] - 添加驱动库文件:`hc32f460_ddl_Rev2.1.0/ddl`目录下的驱动库文件 2. **GPIO初始化结构体** ```c // GPIO初始化结构体定义 typedef struct { uint16_t u16PinAttr; // 引脚属性(PIN_ATTR_DIGITAL/PIN_ATTR_ANALOG) uint16_t u16Dir; // 方向(PIN_DIR_INPUT/PIN_DIR_OUTPUT) uint16_t u16Drive; // 驱动能力(PIN_DRV_LOW/PIN_DRV_HIGH) uint16_t u16Latch; // 锁存功能(PIN_LATCH_OFF/PIN_LATCH_ON) } stc_gpio_init_t; ``` 3. **时钟使能** ```c // 使能GPIO模块时钟(以PortA为例) CLK_FcgPeriphClockCmd(CLK_FCG_GPIOA, ENABLE); ``` 4. **基本输出配置示例** ```c void GPIO_Output_Config(void) { stc_gpio_init_t stcGpioInit; // 初始化结构体配置 GPIO_StructInit(&stcGpioInit); // 加载默认值 stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL; // 数字模式 stcGpioInit.u16Dir = PIN_DIR_OUTPUT; // 输出模式 stcGpioInit.u16Drive = PIN_DRV_HIGH; // 高驱动能力 // 初始化PB5引脚(LED控制) GPIO_Init(GPIO_PORT_B, GPIO_PIN_05, &stcGpioInit); // 设置输出电平 GPIO_SetBits(GPIO_PORT_B, GPIO_PIN_05); // 高电平 // GPIO_ResetBits(GPIO_PORT_B, GPIO_PIN_05); // 低电平 } ``` ### 二、输入模式配置要点 参考ADC例程中的模拟输入配置[^3]: ```c void AdcSetPinAnalogMode(void) { stc_gpio_init_t stcGpioInit; GPIO_StructInit(&stcGpioInit); stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG; // 模拟输入模式 GPIO_Init(ADC_CHX_PORT, ADC_CHX_PIN, &stcGpioInit); } ``` ### 三、注意事项 1. **时钟配置**:必须使能对应GPIO端口时钟后才能操作寄存器 2. **复用功能**:使用复用功能时需配置AFR寄存器 3. **防抖动**:输入模式下可配置消抖滤波 4. **驱动能力**:根据负载特性选择低/高驱动能力(PIN_DRV_LOW/PIN_DRV_HIGH)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式老牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值