打印
[STM32F1]

用STM32特殊引脚作为普通IO时需要的操作

[复制链接]
57|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2025-1-14 08:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
引出来的引脚再特殊也是GPIO
在PCB设计时,并没有去看手册,而是直接用嘉立创里的封装直接设计电路,导致用上了3个特别阴的引脚 PA15 PA12 PA11,在编程控制PA15的时候,发现无法控制,查文章之后发现这个引脚默认是用于JTDI调试的引脚,需要先失能默认使用的JTDI功能,再重定义到PA15的GPIO功能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);// 使能复用时钟和引脚GPIO时钟  
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); // 不分配跟踪引脚,释放PB3      
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  // 切换到SWJ调试,释放PA15


上面两句就是失能了JTAG,只用SW调试,也够用了





这样PA15再进行开时钟,设置GPIO结构体后就可以正常输入输出了。
接下来是PA12 PA11,我在工程开始的时候无法控制这两个引脚,由于PA15的前车之鉴,我又去查了资料 这两个引脚有人说默认是用于USB外设的,接了几K的上拉电阻,无法作为GPIO使用,从原理图上能看到是用于UD+,UD-



就给我了我误区,让我以为也要先失能USB,DisableUSB外设才能用,我去ST官网下了关于USB外设的库,一顿搞下来发现没用,这时候万用表出场了,一测发现,只是经过正常的GPIO结构体配置后,能够正常输出了,回头才发现是自己应用代码写错了,但是IO是正常输出的,这下明白了默认的那一栏是GPIO就代表了只需要最简单的配置就可以控制,而不是其他的花里胡哨,只有默认不是GPIO的才需要去折腾。
PC13这个引脚也比较特殊,默认是连接LED灯的,我由于没注意看,直接接了一个按键,因为要设置为上拉输入,LED和按键出现了冲突,就是我在按下按键中断后无法进行第二次中断。
灯也会隐隐亮,我在中断里再次配置GPIO发现,按键正常了,可以多次中断了,应该是有LED的存在导致的电路问题不过也算解决了,



还有一个问题STM32的GPIO无法正常控制PNP三极管,但是可以正常控制NPN,之前的这个电路我用的是PNP型三极管,这里出现了一个问题,我把IO拉高以后,最高只能到3.8V,PNP低电平导通,高电平截止,虽然我在STM32的控制里已经拉高了,但是5V-3.8>0.7 仍然是导通状态,我查了之后说外接一个上拉电阻到5V,再配置为开漏输出,可惜,仍然拉不高,我选用了5K-10K内的4种电阻,仍然无法截至PNP



于是我直接替换成了NPN三极管只需要反转三极管的安装方向,不需要更改PCB设计,接上后更改配置,能够正常控制导通,果然 PNP是我最讨厌的东西,如果集电极接3.3V就能正常控制了



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_46015224/article/details/145017182

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2067

主题

16021

帖子

15

粉丝