一个ESP8266的小项目

https://blog.csdn.net/shitou123xsx/article/details/90550098

最近由于任务需要,用STM32F103C8T6做了一块板子,以前一直在用JLINK给芯片下载程序【swd】,从未使用过STM32 JTAG下载功能,JTAG功能中包含了PB3 PB4。这次在做的板子中恰巧使用到了PB3引脚用来做普通GPIO口。在不知情的情况下调试了一天,板子上的所有GPIO口都能够正常工作,唯独PB3这个引脚经过多次配置都无法正常的使用。

经过查阅资料发现PB3引脚默认配置为JTAG功能,如果想要将PB3设置成普通GPIO口功能需要在配置的时候关闭PB3引脚的JTAG功能,让其可以充当普通GPIO口来进行使用。

void Guang_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
/*******GPIOB********/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

上面的代码是我的工程中的一段初始化代码,其中使用到了PB3作为输入功能。在上述代码中的

RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

在这两行代码中开启了AFIO时钟,禁止使用了芯片的JTAG功能(GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);或者使用寄存器操作方式AFIO->MAPR|=2<<24;)另外在禁止芯片的JTAG功能时不能错误的吧芯片的swd功能禁止掉,如果禁止了芯片的SWD功能,那就只有换个芯片了。经过这样的简单配置PB3就可以正常的充当GPIO口使用了。其实在设计板子的时候如果芯片的GPIO口数量充足尽量不要去使用PB3 PB4 这两个引脚,以免在后续的开发过程中被这个问题挡住去路,拖延了项目的开发进度。

关于重映射大家可以参考下这个文章https://wenku.baidu.com/view/84aae02df705cc1754270948.html。

STM32F103 PB3 PB4 设置成普通GPIO的配置相关推荐

  1. 关于STM32 PB3 PB4 如何设置成普通GPIO的配置

    转载地址  https://blog.csdn.net/love33521/article/details/8308036 对于初学习者来说为什么用到PB3和PB4时无法控制输出呢? 下面就这一问题进 ...

  2. STM32F103C8T6配置PB3管脚为普通GPIO的方法

    最近在做课程设计,使用的GPIO口比较多,由于管脚不足,以至于不得不使用PB3.PB4管脚,但发现普通的配置GPIO的方式不能正常的使用,从在不知情的情况下调试了大半天,板子上的一般的GPIO口都能够 ...

  3. STM32单片机PB3/PB4/PA15用作普通IO使用

    STM32单片机PB3/PB4/PA15这三个引脚比较特殊,上电复位默认是作为调试端口使用的,进行电路设计的时候应尽量避免将PB3/PB4/PA15这三个引脚当作普通IO使用:若要将它们作为普通的IO ...

  4. STM32F103:SWJ调试端口设置成普通I/O口——PA13,PA14,PA15,PB3,PB4

    本文章技术信息均出自:STM32F103系列超详细参考手册-中文版 一.SWJ调试端口 STM32有两种程序调试接口(程序烧写口),具体如下: SWD调试接口: PA13.PA14共两个引脚. JTA ...

  5. GD32 关于PB3,PB4,PA15 的GPIO工作不正常的问题-设置为普通gpio

    PB3,PB4 的默认引脚功能是JTAG 或SWD功能 我们应该修改io的功能映射,涉及函数有 /*!\brief configure GPIO pin remap\param[in] gpio_re ...

  6. STM32F103的映射的介绍、GPIO端口初始化设置和点流水灯详细操作

    文章目录 一.STM32F103的映射介绍 1.地址映射介绍 2.寄存器映射的介绍 二.GPIO端口的初始化设置 1.GIPO简介 2.时钟配置 3.输入输出模式设置 4.最大速率设置 三.实例--流 ...

  7. STM32F103 PB3,PB4,PA15的使用

    标题STM32F103 JTAG/SWD调试口的使用. 使用STM32很多年了,开始使用的是JTAG的调试下载,受JLIN上面的接口影响,PCB上一直放的是20PIN的标准座,后来空间有点紧张又改为1 ...

  8. STM32学习记录--关于按键配置(PB3 PB4)

    目录 问题 解决方案 问题 有一个项目需要用到PB3与PB4配置成按键输入,这原理图的引脚配置可以看到,因为PB3和PB4在默认情况下是做JTAG调试用的.如果需要将其当普通GPIO使用,需要关闭JT ...

  9. STM32-SWD仿真时PB3,PB4,PA15使用问题

    上代码: void generalIO_Init(void) //通用IO口初始化 {//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2Per ...

最新文章

  1. android Service 的使用
  2. 服务器可以pyqt显示吗,用pyqt+socket实现远程操作服务器的一个例子,PyQtsocket,方法,示例...
  3. 第十七天:规划沟通管理
  4. java判断日期是否是同一周_JAVA里面怎样判断一个日期是否是星期六或者星期天,给出原代码,多谢!!!!!!!!!!...
  5. JavaScript笔记-使用JS管理URL链接(前端小技巧)
  6. compile error
  7. iOS 操作系统被曝无线网络命名bug 导致 iPhone无法连接无线网络
  8. Windows 7 SP1意味着XP降级的结束
  9. java数组函数_Java数组
  10. 阿里云服务器ECS测评
  11. 导向滤波与opencv python实现
  12. 解决windows 下文件名太长无法删除的问题
  13. centos7 安装英伟达驱动;cuda;docker离线安装;docker gpu离线安装;制作自己的cuda镜像;安装 容器中ssh协议
  14. 三种常见的网络/路由模拟器
  15. IOS证书制作,最简单的在线制作流程
  16. Hbase思维导图之物理模型
  17. ttf格式字体怎么安装教程
  18. 应变/温度数据采集系统设计方案——德维创(DEWETRON)
  19. Redmine配置邮箱
  20. Spark课后练习来了

热门文章

  1. STM32F103硬件IIC对MPR121的初始化
  2. 系统管理Lesson 18.Managing Performance
  3. 关于bgcolor和background-color的区别
  4. 【华三交换机开局基础配置】
  5. GPS车载导航仪进行多媒体娱乐的双屏异显
  6. Shape-from-Shading 经典算法之Tsai Shah法
  7. 【Linux教程】Ubuntu Linux 更换源教程
  8. mysql车库管理系统_毕设-智能车位管理系统微信小程序的设计与实现
  9. 托福学习计划日本留学考研
  10. 安洵杯-crackme-wp