STM32使用PB3, PB4引脚的注意事项

  STM32的PB3, PB4引脚作为GPIO引脚需要注意,因为他们默认分别是JTDO和NJTRST引脚。

  笔者在设计可调增益增益放大器(VGA)的时候,使用4个GPIO读取外部控制电压,根据约定的编码格式设定DAC的输出电压,从而设置VGA的增益,然而在测试发现,DAC的输出电压不稳定,并不是设想的数值。经过多次实验、代码分析,发现并不是DAC的问题,而是GPIO的问题,4个GPIO中使用了PB3,而PB3默认不是GPIO而是JTDO引脚,因此需要特殊的声明,代码如下:

c 复制代码
void OUTSIDE_VGACTRL_GPIO_Config(void)
{
  //满洲里国峰电子科技
  //www.guofengdianzi.com
  //微信:guofengdianzi

  GPIO_InitTypeDef GPIO_InitStructure;
  
  /*开启端口的时钟*/
  RCC_APB2PeriphClockCmd(OUTSIDE_VGACTRL1_GPIO_CLK | OUTSIDE_VGACTRL2_GPIO_CLK | OUTSIDE_VGACTRL3_GPIO_CLK | OUTSIDE_VGACTRL4_GPIO_CLK, ENABLE);
  
  //将
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
  
  //选择引脚
  GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL1_GPIO_PIN; 
  // 设置引脚为下拉
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
  //使用结构体初始化
  GPIO_Init(OUTSIDE_VGACTRL1_GPIO_PORT, &GPIO_InitStructure);
  
  //选择引脚
  GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL2_GPIO_PIN; 
  // 设置引脚为下拉
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
  //使用结构体初始化
  GPIO_Init(OUTSIDE_VGACTRL2_GPIO_PORT, &GPIO_InitStructure);
  
  //选择引脚
  GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL3_GPIO_PIN; 
  // 设置引脚为下拉
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
  //使用结构体初始化按键
  GPIO_Init(OUTSIDE_VGACTRL3_GPIO_PORT, &GPIO_InitStructure);
  
  //选择引脚
  GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL4_GPIO_PIN; 
  // 设置引脚为下拉
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
  //使用结构体初始化
  GPIO_Init(OUTSIDE_VGACTRL4_GPIO_PORT, &GPIO_InitStructure);
}

作者:潇洒的电磁波(专业:射频芯片设计、雷达系统、嵌入式。欢迎大家项目合作交流。)

相关推荐
亮工硬件10 小时前
1-11 STM32内部FLASH(数据掉电保存)
笔记·stm32·单片机·嵌入式硬件·学习
LCG元13 小时前
STM32 硬件SPI驱动W25Q Flash实战:从CubeMX配置到DMA高速读写
stm32·单片机·嵌入式硬件
铅笔小新z14 小时前
【stm32】I2C 阻塞通信实战与 HAL 源码
stm32·单片机·嵌入式硬件
码上上岸16 小时前
基于stm32的智能荷兰豆生长舱监控系统
stm32·单片机·嵌入式硬件·物联网
星栖与芯16 小时前
STM32MP157 M4 指针避坑(一):先看清“客栈“——内存布局与指针基础
stm32·单片机·嵌入式硬件
沉淀的.晴天18 小时前
FreeRTOS任务挂起与恢复
stm32
大漠飞鹰666619 小时前
【Uart串口-GD32无标题】
stm32·单片机·嵌入式硬件
亮工硬件19 小时前
1-8 简易串口通讯协议(UART + 自定义帧协议)
笔记·stm32·单片机·嵌入式硬件·学习
星栖与芯19 小时前
STM32MP157 M4 指针避坑(三):生命周期与内存踩踏——HardFault 重灾区
java·网络·stm32
wuyk55520 小时前
从零吃透 MQTT 通信|第 6 章 MQTT 主题、过滤器、通配符、订阅管理、拒收机制详解与代码实现
c语言·stm32·学习