• 欢迎访问我的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 本网站关闭了评论功能,联系请点击→邮箱
  • Ctrl+D 可快捷收藏本站点

STM32GPIO配置

STM32 gql 4年前 (2021-03-24) 915次浏览

有如下一段配置F030的SPI的GPIO的程序,其中PB13为SCK,PB14为MISO,PB15为MOSI。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Medium_Speed;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOB, &GPIO_InitStructure);

显然SCK输出,MISO为输入。那么问题来了,为啥像SPI的MISO或者USART的RX总是一起配置为推挽输出模式呢?

在这里我们应当知道两点:

  • 当GPIO设置成推挽输出时,硬件处是IO跟输入模式断开的,所以在此时设置软件上拉下拉是没有意义的。
  • 另外值得注意的是如果配置为复用功能,输入/输出状态,完全由外设掌握,这时设置软件输入/输出状态也是没有意义的。

上面的程序中,我们知道PB13、PB14、PB15都被配置复用(SPI)功能,这时已经确定了PB13、PB15为输出,PB14为输入。那么答案就有了,推挽输出对PB13、PB15有效,对PB14无效,上拉配置对PB14有效,对PB13、PB15无效。


如未注明 , 均为原创。转载请注明原文链接:STM32GPIO配置
喜欢 (0)