//========================================================================
// 函数: u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回 SUCCESS, 错误返回 FAIL.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx);
typedef struct
{
u8 Mode; //IO模式, GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
u8 Pin; //要设置的端口
} GPIO_InitTypeDef;
##########################################################################
##########################################################################
##########################################################################
STC 的 初始化IO口函数, 使用了结构体, 将简单的 对寄存器 PxM1,PxM0 赋值, 搞成一大堆指令。
又是指针,又是判断,程序执行效率极低,我特用宏定义 编写了一个,执行效率极高,功能完全兼容。
程序执行时,仅对寄存器 PxM1,PxM0 赋值, 相当于用 汇编语言直接编写。
当时编写了一个通用型的,能自动识别 STC51、STC16、STC32系列,并给出相对应单片机型的最优化的执行代码。
但后来感觉 H头文件有点复杂有点长,现将其拆分,分别对应于 STC51系列 和 STC251(STC16、STC32)系列 。
现分享给大家 。
网友测试时,可单步运行查看运行结果,也可直接查看检查反汇编程序。