当前位置: 首页 > news >正文

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

相关文章:

  • 阿里云SLB负载均衡的ALB和NLB有啥区别?一个是7层一个是4层
  • Redis中哈希(Hash)常见命令详解
  • 快速入门Springboot+vue——MybatisPlus多表查询及分页查询
  • 第四章:高级特性与最佳实践 - 第四节 - Tailwind CSS CSS 提取和打包优化
  • [NKU]C++理论课 cours 3 数据抽象(封装->隐藏实现的手段,隐藏->封装的重要目标)
  • 跳格子游戏
  • Sun-Panel:简洁且美观的导航首页开源项目!!
  • LeetCode 2595.奇偶位数:位运算
  • DeepSeek全系列全平台部署(可代部署)
  • 2025鸿蒙开发面试题汇总——通俗易懂
  • DeepSeek-R1本地部署简易教程
  • Python数据结构实战:链表的构建与操作
  • Nginx安装:源代码编译安装
  • vmware虚拟机Ubuntu Desktop系统怎么和我的电脑相互复制文件、内容
  • 硬件岗位是否适合你?
  • Linux环境基础开发工具的使用(三)
  • 用算术右移操作实现整型数的除法
  • 【git】工作流实战:从本地仓库到远程仓库,git pull 与git rebase使用讲解,案例解析
  • C++,设计模式,【工厂方法模式】
  • Openssl之SM2加解密命令
  • 网站做进一步优化/sem竞价广告
  • 爱唐山做贡献月评十佳投票网站/品牌设计公司排名前十强
  • 梧州做网站建设/数据分析培训
  • 网站开发专业建设/百度搜索引擎广告位的投放
  • 安徽省建设厅焊工证查询网站/品牌营销推广公司
  • 佛山网站建设哪家效果好/seo网站优化技术