你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
cndx100

cndx100

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
4 回答

GPIO模式配置求助

未设置标签
无薪税绵 无薪税绵 回答时间: 2018-3-7 16:34

MODE是GPIO的输出模式位,只有选择了这个位,才能确定GPIO的输入输出特性。 只有选择为输出模式,才能接下来配置为推挽、开漏、推挽复用、开漏复用模式。 同样,配置为输入模式,才能配置为模拟、浮空、上拉、下拉输入模式。 STM32在上电复位之后,默认的输出模式时 00(也就是输入模式), STM32库函数中对于GPIO使用的是一种更为精妙的方法。 首先是看一下关于STM32 GPIO结构体内部: 分为三个结构体变量: GPIO_Pin, GPIO_Speed, GPIO_Mode。 其中,GPIO_Speed 和 GPIO_Mode同时也是一个结构体。 分别初始化GPIO引脚的输出速率和模式。 接下来,看一下GPIO_Speed可以选择的取值, 明显发现这个的参数的设置, 就是关于STM32 GPIO引脚的输出速率设置。 typedef enum {   GPIO_Speed_10MHz = 1,   GPIO_Speed_2MHz,   GPIO_Speed_50MHz }GPIOSpeed_TypeDef; 接下来,看一下GPIO_Mode的取值: typedef enum { GPIO_Mode_AIN = 0x0,   GPIO_Mode_IN_FLOATING = 0x04,   GPIO_Mode_IPD = 0x28,   GPIO_Mode_IPU = 0x48,   GPIO_Mode_Out_OD = 0x14,   GPIO_Mode_Out_PP = 0x10,   GPIO_Mode_AF_OD = 0x1C,   GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; 在阅读数据手册的时候发现, 如果是直接操作做寄存器,对于GPIO模式的控制位只有2位, 所以,是不会出现0x14,0x10,0x1C,0x18这些取值的。 这里,如果想知道为什么库函数中会这样的设置,就必须接着看GPIO_Init函数。   currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);   if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)   {     /* Check the parameters */     assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));     /* Output mode */     currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;   } 对于GPIO_Init函数,传递进来的参数, 先通过mode参数,设置了GPIO模式参数, 再接着根据传递的mode的值, 判断此GPIO设置为输入模式还是输出模式, 如果是输出模式,才会进行设置GPIO的速率, 如果是输入模式,忽略掉速率的设置。 资料引用自:对于STM32 GPIO模式不理解造成的问题解释 http://blog.csdn.net/u010307522/article/details/41492107

赞0
cndx100 cndx100


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16