[新唐博主]

IO_Map代码

[复制链接]
452|7
手机看帖
扫描二维码
随时随地手机跟帖
秦九音|  楼主 | 2019-11-19 17:05 | 显示全部楼层 |阅读模式
本帖最后由 秦九音 于 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);
}

使用特权

评论回复
yiy| | 2019-11-19 19:32 | 显示全部楼层
总之新唐头文件帮我们实现了这种操作。

使用特权

评论回复
21mengnan| | 2019-11-19 21:07 | 显示全部楼层
这是为了方便,你不想用PA0,你可以直接PA1啊。如果你想用你可以PA0|PA1|PA2这种逻辑操作也行啊。

使用特权

评论回复
21mengnan| | 2019-11-19 21:07 | 显示全部楼层
楼主没搞清人家那么提供的原因。

使用特权

评论回复
秦九音|  楼主 | 2019-11-20 09:13 | 显示全部楼层
21mengnan 发表于 2019-11-19 21:07
这是为了方便,你不想用PA0,你可以直接PA1啊。如果你想用你可以PA0|PA1|PA2这种逻辑操作也行啊。 ...

这种逻辑操作实现不了我写那个IOConfig函数的功能吧 如果能请教我谢谢

使用特权

评论回复
yiy| | 2019-11-20 15:10 | 显示全部楼层
不懂楼主的这种操作手法。

使用特权

评论回复
huahuagg| | 2019-11-21 07:38 | 显示全部楼层
我觉得官方的库够用了啊

使用特权

评论回复
dongliushui| | 2019-11-21 09:08 | 显示全部楼层
XPin_Map.t,XPin_Map.id?这是啥操作。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

32

帖子

0

粉丝