打印
[新唐博主]

IO_Map代码

[复制链接]
456|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 | 只看该作者
楼主没搞清人家那么提供的原因。

使用特权

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

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

使用特权

评论回复
6
yiy| | 2019-11-20 15:10 | 只看该作者
不懂楼主的这种操作手法。

使用特权

评论回复
7
huahuagg| | 2019-11-21 07:38 | 只看该作者
我觉得官方的库够用了啊

使用特权

评论回复
8
dongliushui| | 2019-11-21 09:08 | 只看该作者
XPin_Map.t,XPin_Map.id?这是啥操作。。

使用特权

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

本版积分规则

11

主题

32

帖子

0

粉丝