社区导航

 

搜索
查看: 232|回复: 10

[求助] stm32同一组io口不同引脚设置不同输入输出模式

[复制链接]

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-12-25 11:22:02 | 显示全部楼层 |阅读模式
stm32同一组io口不同引脚设置不同输入输出模式,比如PA口的PA1用作输入使用来读取输入值,PA2用作输出使用来输出高低电平。这个时候应该怎么初始化话呢?像下面这样么?我猜下面这样肯定不对。期待大神路过~
    GPIO_InitTypeDef GPIO_InitStruct;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
   
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStruct.GPIO_Mode =GPIO_Mode_OUT  ;
  
    GPIO_Init(GPIOA,&GPIO_InitStruct);


此帖出自stm32/stm8论坛


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-28 15:18:55 | 显示全部楼层
结贴啦,IO口的配置中一个GPIO_init()中的GPIO_InitStructure函数只是针对你写的对应的引脚的而不是一整个组的,如果你想写同一组IO口的不同引脚不同功能,只需要写多个GPIO_InitStructure函数就可以了。


回复

使用道具 举报

721

TA的帖子

1

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2018-12-25 11:28:28 | 显示全部楼层
还真的没有这么写过,不知道行不行,一般都是分开的。行不行自己测试一下就行了呀,很好测试的呀。没必要问别人的

点评

额,你们说的分开设置是什么意思,怎么分开设置?写两个初始化函数?  详情 回复 发表于 2018-12-25 14:17


回复

使用道具 举报

7142

TA的帖子

4933

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2018-12-25 12:08:45 | 显示全部楼层
楼上说的对,实际测试一下就知道行不行得通

点评

测试过,行不通。所以问问到底怎写  详情 回复 发表于 2018-12-25 14:17


回复

使用道具 举报

3628

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-12-25 13:36:38 | 显示全部楼层
尽量不要这样操作。应该是有问题的。可以验证一下。分开设置就可以了。

点评

void GPIO_OUT(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OU  详情 回复 发表于 2018-12-25 14:31
怎么分开设置,可以稍微详细的说一下么,多谢多谢  详情 回复 发表于 2018-12-25 14:16


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-25 14:16:45 | 显示全部楼层
ienglgge 发表于 2018-12-25 13:36
尽量不要这样操作。应该是有问题的。可以验证一下。分开设置就可以了。

怎么分开设置,可以稍微详细的说一下么,多谢多谢


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-25 14:17:31 | 显示全部楼层
曹伟1993 发表于 2018-12-25 11:28
还真的没有这么写过,不知道行不行,一般都是分开的。行不行自己测试一下就行了呀,很好测试的呀。没必要问 ...

额,你们说的分开设置是什么意思,怎么分开设置?写两个初始化函数?


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-25 14:17:53 | 显示全部楼层
tiankai001 发表于 2018-12-25 12:08
楼上说的对,实际测试一下就知道行不行得通

测试过,行不通。所以问问到底怎写


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-25 14:31:47 | 显示全部楼层
ienglgge 发表于 2018-12-25 13:36
尽量不要这样操作。应该是有问题的。可以验证一下。分开设置就可以了。

void GPIO_OUT(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
       
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;
       
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
       
        GPIO_Init(GPIOA,&GPIO_InitStruct);
}

void GPIO_IN(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;
       
        GPIO_Init(GPIOA,&GPIO_InitStructure);
}
这样的是你说的分开写么?这两个mode部分不一样,一个是输入一个是输出,我一起初始化后,可以在后续程序中同时使用4引脚的输出和6引脚的输入么?

点评

GPIO_InitStructure的成员最多配置一次,然后执行GPIO_Init。 再配置下一个引脚。重复上面的过程。  详情 回复 发表于 2018-12-25 16:07


回复

使用道具 举报

3628

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-12-25 16:07:54 | 显示全部楼层
shijizai 发表于 2018-12-25 14:31
void GPIO_OUT(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph ...

GPIO_InitStructure的每个成员最多配置一次,然后执行GPIO_Init。
再配置下一个引脚。重复上面的过程。

点评

嗯嗯,谢谢  详情 回复 发表于 2018-12-26 08:48


回复

使用道具 举报

308

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-26 08:48:32 | 显示全部楼层
ienglgge 发表于 2018-12-25 16:07
GPIO_InitStructure的每个成员最多配置一次,然后执行GPIO_Init。
再配置下一个引脚。重复上面的过程。

嗯嗯,谢谢


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-1-21 03:41 , Processed in 0.304892 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表