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

STM32G431CBU6如何设置IO口的方向?

[复制链接]
shymeet 提问时间:2021-9-6 16:16 /
我在使用STM32G431CBU6时,需要使用两个IO口模拟I2C通信,需要像F103系列一样如下设置io口方向:
#define MPU_SDA_IN()  {GPIOA->CRL&=0XFFFF0FFF;GPIOA->CRL|=8<<12;}
#define MPU_SDA_OUT() {GPIOA->CRL&=0XFFFF0FFF;GPIOA->CRL|=3<<12;}

但是出现报错CRL,我顺势查找了stm32g4xx.h文件,与stm32f1xx.h文件对比,发现g确实没有CRL,CRH的寄存器字段,所以不知该如何像F103一样配置IO口方向?
还请各位大佬指教。

收藏 评论6 发布时间:2021-9-6 16:16

举报

6个回答
废鱼 最优答案 回答时间:2021-9-7 10:45:35
楼主,您好请查阅手册,GPIO寄存器使用GPIOx_BSRR写入1或者0进行输出设置。

1.png
另外也可以参考HAL库中对于IO操作的函数:
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_PIN_ACTION(PinState));

  if (PinState != GPIO_PIN_RESET)
  {
    GPIOx->BSRR = (uint32_t)GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = (uint32_t)GPIO_Pin;
  }
}


butterflyspring 回答时间:2021-9-7 11:44:28
从手册上看,可以改变寄存器的某些位,如附图所示。 没有直接对应的函数或定义,自己对寄存器操作也行。
butterflyspring 回答时间:2021-9-7 11:45:16
butterflyspring 发表于 2021-9-7 11:44
从手册上看,可以改变寄存器的某些位,如附图所示。 没有直接对应的函数或定义,自己对寄存器操作也行。
...

补上附图
STM32G4模拟I2CIO.PNG
xmshao 回答时间:2021-9-7 15:15:28
如果不是特别喜好寄存器操作,建议使用Cubemx进行配置。这里涉及到2个寄存器,它们是GPIOx_MODER和GPIOx_OTYPER。至于是否使用内部上下拉电阻,还涉及到GPIOx_PUPDR寄存器,你稍微看看相关内容。
shymeet 回答时间:2021-9-8 09:31:25
飞羽一条 发表于 2021-9-7 10:45
楼主,您好请查阅手册,GPIO寄存器使用GPIOx_BSRR写入1或者0进行输出设置。

好的 谢谢指教
至暗时刻 回答时间:2021-11-18 15:00:00

图片.png

图片.png图片.png

仅供参考

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版