#ifndef __STC_GPIO_H
#define __STC_GPIO_H
/***************************************************************************************
Model : STC_GPIO.H
Description : Head file of defining global variable.
Author : CLR
Create Time : 2023-04-17
Version ID : 2.0
用 途 :通用型, 能对宏晶 STC51/STC16/STC32系列MCU,
自动识别, 给出最优化的执行代码!
作 者 :许意义
21ic ID :LAOXU
中颖论坛 : bbs.21ic.com
****************************************************************************************/
//========================================================================
// 定义声明
//========================================================================
// 请注意, 为了便于下面的宏定义, GPIO输入输出模式, 与官方定义不同!!!
#define GPIO_PullUp 0L //上拉准双向口
#define GPIO_OUT_PP 1L //推挽输出
#define GPIO_HighZ 2L //浮空输入
#define GPIO_OUT_OD 3L //开漏输出
/*------------------------------------------------------------------------------------
===========编 程 实 例===========
------Cortex-M051风格1------
1.void GPIO_SET_MODE(Pn, b7,b6,b5,b4,b3,b2,b1,b0); // 设置IO口输入输出模式(n=0-7)
使用方式:
GPIO_SET_MODE(P3, PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD);
// 设置P3口的bit.7-bit.0位,依次为PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD模式
2.void GPIO_SET_PIN_MODE(Port, Pin_Mode); // 设置IO口其中1位或数位输入输出模式(N=0-7,i=0-7)
例如:
GPIO_SET_PIN_MODE(P3, OUT_OD_Pin6); // 设置P3口的第bit.6位为OUT_OD模式
GPIO_SET_PIN_MODE(P2, PullUp_Pin5 | OUT_PP_Pin2 | HighZ_Pin0); // 设置P2口的第bit.5位为PullUp模式,第bit.2位为OUT_PP模式,第bit.0位为HighZ模式
--------------------------------------------------------------------------------------*/
#define GPIO_SET_MODE(Port, b7,b6,b5,b4,b3,b2,b1,b0) Port##_SET_MODE(b7,b6,b5,b4,b3,b2,b1,b0)
#define GPIO_SET_PIN_MODE(Port, Pin_Mode) Port##_SET_PIN_MODE(Pin_Mode)
/*------------------------------------------------------------------------------------
------Cortex-M051风格2------
3.void Pn_SET_MODE(b7,b6,b5,b4,b3,b2,b1,b0); // 设置Pn IO口输入输出模式(n=0-4)
使用方式:
P3_SET_MODE(PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD);
// 设置P3口的bit.7-bit.0位,依次为PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD模式
4.void Pn_SET_PIN_MODE(Pin_Mode); // 设置Pn IO口其中1位或数位输入输出模式(N=0-7,i=0-7)
例如:
P3_SET_PIN_MODE(OUT_OD_Pin6); // 设置P3口的第bit.6位为OUT_OD模式
P2_SET_PIN_MODE(PullUp_Pin5 | OUT_PP_Pin2 | HighZ_Pin0); // 设置P2口的第bit.5位为PullUp模式,第bit.2位为OUT_PP模式,第bit.0位为HighZ模式
--------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------
-------51系列风格-------
5.u8 GPIO_Mode(b7,b6,b5,b4,b3,b2,b1,b0); 设置IO口输入输出模式
使用方式:
PnMode = GPIO_Mode(b7,b6,b5,b4,b3,b2,b1,b0); 设置IO口输入输出模式
P3Mode = GPIO_Mode(PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD);
// 设置P3口的bit.7-bit.0位,依次为PullUp,HighZ,PullUp,HighZ,OUT_PP,OUT_OD,OUT_PP,OUT_OD模式
--------------------------------------------------------------------------------------*/
|