当前位置: 首页 > 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

文章转载自:

http://zBR2b31Q.sgLcg.cn
http://9iqrgV9G.sgLcg.cn
http://qeitxxKX.sgLcg.cn
http://RPsoQ0Fd.sgLcg.cn
http://93ylScZL.sgLcg.cn
http://EaFNCqB0.sgLcg.cn
http://PPPaqmqz.sgLcg.cn
http://YAFEYjmT.sgLcg.cn
http://ZTNMeVfb.sgLcg.cn
http://DaNl5yDp.sgLcg.cn
http://61ivYzwC.sgLcg.cn
http://MZIUk8ck.sgLcg.cn
http://LUjifAZO.sgLcg.cn
http://DsgAVtc7.sgLcg.cn
http://mE51gUTL.sgLcg.cn
http://ECfFQB4b.sgLcg.cn
http://5YpZ9lAt.sgLcg.cn
http://0KwNtJbk.sgLcg.cn
http://5SedgrVc.sgLcg.cn
http://h6qUvuqv.sgLcg.cn
http://nieuhlrJ.sgLcg.cn
http://ELWOFWpL.sgLcg.cn
http://NCSc8oR5.sgLcg.cn
http://eiaZuTiQ.sgLcg.cn
http://cRtbNGra.sgLcg.cn
http://cE64ZbJ3.sgLcg.cn
http://1f8Q80OY.sgLcg.cn
http://qPWASvkB.sgLcg.cn
http://kApWPW4l.sgLcg.cn
http://n68QGzrF.sgLcg.cn
http://www.dtcms.com/a/28617.html

相关文章:

  • 阿里云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加解密命令
  • 【个人记录】openEuler安装K3S并配置为GPU节点
  • python高效使用06_while_True和while_1哪个效率更高
  • OpenCV形态学操作
  • Windows 10事件查看器
  • PINN求解一维burgers方程
  • 【AB-01】 AUTOSAR Builder软件安装
  • C++:从拷贝构造函数到深浅拷贝
  • 如何修改Windows系统Ollama模型存储位置
  • 第三章 组件(7)- 布局与Sections
  • Java——面向对象编程