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);
}

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

相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘8 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
牛根生同志8 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
goldenrolan8 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
CC城子8 天前
STM32H7_FDCAN 驱动笔记
stm32·can·canfd
意法半导体STM328 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
雾削木8 天前
B语言经典教程现代化重构
java·前端·stm32·单片机·嵌入式硬件
Digitally8 天前
如何快速将文件从电脑传输到平板电脑
stm32·嵌入式硬件·电脑
项目題供诗8 天前
STM32-USART串口协议(二十二)
stm32·单片机·嵌入式硬件
欢乐熊嵌入式编程8 天前
选型避坑:ESP32 vs STM32+模组 vs NB-IoT,不同场景怎么选
stm32·单片机·嵌入式硬件·物联网·esp32·嵌入式iot
振南的单片机世界8 天前
ARM中断比51快在哪?硬件压栈+NVIC集中管理
arm开发·stm32·单片机·嵌入式硬件