当前位置: 首页 > news >正文

【Bug】STM32F1的PB3和PB4无法正常输出

Bug

使用标准库配置STM32F103C8T6的PB3和PB4引脚输出控制LED灯时,发现引脚电平没有变化无法正常输出高低电平,配置代码如下:

	GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOB, ENABLE );	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_4);

Reason

原文链接:STM32 PB3/PB4不能正常使用的解决办法
网上搜了一下后通过上面博客的讲解,才知道在系统复位的时候,PB3和PB4对应的功能默认为SYS_JTDO和SYS_NJTRST。
在这里插入图片描述
这两个引脚是在使用Jlink向STM32烧录程序时需要用到,所以默认的功能就不作为普通的GPIO,需要通过复用,才能作为普通的GPIO,只需要在配置时增加以下两行代码:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);	 
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);		

第一行是多一个复用功能时钟的使能,第二行是使能JTAG相关引脚的复用,该参数在内部函数中标注的意思是:@arg GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled


Resolution

修改后的配置代码如下:

	GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_4);


http://www.mrgr.cn/news/41902.html

相关文章:

  • 【当当网】电子书城-02-验证码的实现
  • 物联网 IOT 与工业物联网 IIOT 极简理解
  • 画质与体验双升, 海信AI电视从此更懂你
  • [Python学习日记-36] Python 中的内置函数(中)
  • 【树形DP】AT_dp_p Independent Set 题解
  • 思维题库 T73 放置商店
  • [Python学习日记-37] Python 中的内置函数(下)
  • CSP-J模拟赛(3)补题报告
  • 【AIGC】ChatGPT账号的常见封号原因与解封方法
  • Go语言实现长连接并发框架 - 任务管理器
  • TypeScript 算法手册 【计数排序】
  • 在线JSON可视化工具--支持缩放
  • Redis入门第五步:Redis持久化
  • leetcode打卡001-约瑟夫问题
  • 栈数据结构:定义,基本操作与应用
  • 探索gmqtt:Python中的AI驱动MQTT库
  • Spring 的 IOC 和 AOP 是什么,有哪些优点?解密 Spring两大核心概念:IOC与AOP的魅力所在
  • LeetCode题练习与总结:丑数 Ⅱ--264
  • 【Java】—— 集合框架:Collection子接口:Set不同实现类的对比及使用(HashSet、LinkedHashSet、TreeSet)
  • 展示批量剪辑分割多个视频,助力轻松剪辑