本帖最后由 秦九音 于 2019-11-19 17:13 编辑
今天做项目时要配置很多引脚 如果是eg:PA0=1;PA2=0;...很麻烦
然后发现新唐IO置0或者置1的时候有一个宏定义
#define GPIO_PIN_DATA ....
typedef enum PortType{
g_PA=0,
g_PB,
g_PC,
g_PD,
g_PE,
g_PF,
g_PG,
g_PH,
}PortType;
typedef struct Pin{
PortType t;
int id;
}
#define Size 7
Pin XPin_Map[Size]={
{g_PG,8},
{g_PE,2},
{g_PE,3},
{g_PE,4},
{g_PE,5},
{g_PE,6},
{g_PE,7},
};/*
start 开始设置的IO
arry IO状态的数组
count 数组个数
*/
void IOConfig(unsigned int start,const unsigned char *arry,unsigned int count){
unsigned int i = start;
unsigned int end = start+count;
for(;i<end&&i<count;i++){
if(arry)
GPIO_PIN_DATA (XPin_Map.t,XPin_Map.id)=1;
else
GPIO_PIN_DATA (XPin_Map.t,XPin_Map.id)=0;
}
}
eg:
int main()
{
unsigned char IOState[5]={0,1,0,1,0};
init();//各种初始化
IOConfig(0,IOState,5);
while(1);
}
|