STM32F10X 部分引脚不能使用的问题
一、概述
说来惭愧,我到现在都没有完整的学习过STM32。接触 STM32 还是突然的一个项目,需要用到 STM32,紧急需求,只能边学边完成。不过好在 ST 的资料还是比较多的,相对也比较简单,基本上的需求都能找到对应的demo,或者直接使用 STM32CubeMX 生成代码,最后在稍微改改,写一下自己的逻辑,就能完成需求了。
说来比较庆幸,还好第一个项目只需要前后台方式即可完成,否则我应该都放弃了。后来接触到了实时操作系统,由于没有系统的学习,导致我接触的第一个实时系统居然是 RT-Thread,看着复杂的外设代码当场懵逼,好在后面成功的完成了 uart 和 GPIO 的驱动移植,第一次在 STM32 跑上线程很开心,也深入的理解到了系统的底层是怎么实现的。
就在这样舒适的环境下使用了几年的 STM32,导致我忽视了基础上的学习,以为已经掌握了 STM32,直到今天一个现象让我直接懵逼了,在使用其他 GPIO 的时候都是能正常工作的,但是突然到 PB3、PB4、PA15、PA14、PA15 这几个引脚的时候,直接无法作为输出使用,刚开始以为是硬件上的问题,但是后来发现,之前写的另外一个工程可以使用,很明显这是程序上出了问题,可是查了 RT-Thread 整个代码都没发现有异常的地方,以为是升级版本导致的,折腾了一天后,突然发现是引脚复用问题导致的。崩溃
这里讲述我学习 STM32 的过程,希望能帮助哪些快要放弃的小伙伴,STM32 真的不难,现在网上的资料也很多,讲的也很详细。完全不用先将所有的知识点学完在做事,可以像我一样拿着任务去学习,当然在空余的时候还是有必要完整了解一下基础的知识,不然可能会想我一样,解决问题时会多花一些时间,但是这样的印象也比较深刻。
二、SWJ-DP脚分配
在查了数据手册时,才发现这个几个引脚默认被 JTAG 调试时使用,所以直接使用这个几个引脚作为输出引脚是不行的,如图所示
看到这里相信大家都明白了,只是我们平时在使用的时候没有注意这个细节问题,遇到时就比较懵逼,比如在 STM32CubeMX 配置的时候也有,如下如所示
那怎么复用了,这个就比较简单了,直接生成即可看到用法,容我再简单啰嗦一下,在使用这几个引脚时,需要是能复用时钟
__HAL_RCC_AFIO_CLK_ENABLE();
然后在使用自己需要的配置,释放对应的引脚即可,配置模式如下
// Enable the Serial wire JTAG configuration
__HAL_AFIO_REMAP_SWJ_ENABLE()
// Enable the Serial wire JTAG configuration
__HAL_AFIO_REMAP_SWJ_NONJTRST()
// Enable the Serial wire JTAG configuration
__HAL_AFIO_REMAP_SWJ_NOJTAG()
// Disable the Serial wire JTAG configuration
__HAL_AFIO_REMAP_SWJ_DISABLE()
STM32F10X 部分引脚不能使用的问题的更多相关文章
- [stm32] 一个简单的stm32vet6驱动的天马4线SPI-1.77寸LCD彩屏DEMO
书接上文<1.一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO> 我们发现用16MHz晶振的nRF51822驱动1.77寸的spi速度达不到要求 本节主要采用7 ...
- 基于STM32F10x的串口(USART)输入输出编程
1 前言 STM32有强大的固件库,绝大部分函数都可以有库里面的函数组合编写.固件库可以到ST官网(www.st.com)上下载,也可以搜索“STM32 固件库 v3.5”下载到固件库.本文章就是基于 ...
- STM32F10X SPI操作flash MX25L64读写数据(转)
源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...
- 都是stm32的JTAG引脚惹的祸
转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215 最近在调试08接口的LED显示屏,使用的是自己做的STM32板子. ...
- STM32之VCP1/VCAP2引脚的处理
需要根据仔细根据手册来决定这两个引脚是直接接地还是电容下拉到地 转载:STM32的Vcap的问题及解决---原来经验也害人http://bbs.eeworld.com.cn/thread-499497 ...
- BAYSY2 的LVDS引脚 笔记
差分引脚标号说明: 'L' 代表该引脚属于差分引脚 'xx' 两位整型数,在每一 bank 的独特标记 'y' 表示正向 还是 反向,同时要注意输入输出方向 ‘#’ 0~3,代表 bank0~bank ...
- FPGA的引脚VCCINT 、VCCIO VCCA
首先是看到FPGA在配置的时候有三种不同的电VCCINT .VCCIO VCCA,于是就查了下有什么不同: FPGA一般会有许多引脚,那它们都有什么用呢? VCCINT为施加于 FPGA 内核逻辑的电 ...
- dsp28377控制DM9000收发数据——第三版程序,通过外部引脚触发来实现中断接受数据,优化掉帧现象
//-------------------------------------------------------------------------------------------- - //D ...
- (原创)QuartusII设置虚拟引脚(Virtual Pin)
方法一: 在Quartus II中Assignments->Assignment Editor, 在Category栏选择logic options, 到列表中To列下添加要设置的引脚接口,如果 ...
- Usart的单线半双工模式(stm32F10x系列)
这两天折腾CTS/RTS硬件流控,看到说232协议的CTS/RTS只是用来做半双工换向使用的.正好手头上有块stm32的板子,看了看stm32的Usart,竟然发现支持的是单线半双工.232里面毕竟4 ...
随机推荐
- KafkaConsumerDemo
pom <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>sp ...
- 使用Dockerfile部署springboot打包jar包
1.docker下载JDK1.8镜像 docker pull java:8 2.进行需要编译的镜像文件目录编写Dockerfile文件 #依赖的父镜像FROM java:8#作者MAINTAINER ...
- KingbaseES V8R6 逻辑恢复到新的 schema
前言 本文介绍一下KingbaseES V8R6版本中逻辑恢复时,将原有的对象恢复到新的schema. sys_restore命令中如果只加入了-g(原schema) -G(新schema)参数 那么 ...
- Java,substring( )方法
该方法可以获取一个String字符串的(x,y)个字符. 其中x和y是左闭右开的,左边的可以取到,右边的取不到,并且索引从0开始. 例如 1 String text = "reliableY ...
- windows下安装SASS
window下安装ruby与sass(附ruby) webstorm设置sass自动编译,及参数配置 安装sass以及如何在sublime里使用 sublime text 3 配置sass环境 sub ...
- 使用OpenMP与AVX优化矩阵乘法
使用OpenMP与AVX优化矩阵乘法 由于课设内容做的太过简(mo)单(yu),于是在去年12月初的时候就计划写三篇博客随笔作为实验报告,前两篇简单介绍了OpenMP和SIMD指令进行铺垫,本篇将会介 ...
- list集合中的实现类Vector
Vector: 它底层也是用数组来存数据对象的,但它是唯一一个线程安全的,线程安全也就意味着时间长,效率慢,如果是单一线程的话,建议不使用该实现类 add(E element): 将指定的元素追加到此 ...
- 面试官:Session和JWT有什么区别?
Session 和 JWT(JSON Web Token)都是用于在用户和服务器之间建立认证状态的机制,但它们在工作原理.存储方式和安全性等方面存在着一些差异,下面我们一起来看. 1.什么是JWT? ...
- 首届OpenHarmony竞赛训练营结营颁奖,75所高校学子助力建设开源生态
由OpenAtom OpenHarmony(以下简称"OpenHarmony")项目群工作委员会和OpenHarmony项目群技术指导委员会主办的首届OpenHarmony竞赛 ...
- Seaborn调色盘设置
调色盘设置 设置调色 color_palette()设置调色盘,返回一个调色盘的颜色列表,默认6种颜色:deep, muted, bright, pastel, dark, colorblind. s ...