请问一下STM32管脚重映射支持任意组合吗?

描述

这里分享我们在STM32应用中可能遇到的两个小话题,尤其对于STM32应用新手。

话题一、STM32管脚重映射支持任意组合吗?

有人使用STM32F4芯片做开发,用到USART1外设。发现有4个GPIO管脚可以支持USART1复用,即PA9,PA10,PB6,PB7。

USART串口

他在21论坛发帖咨询在保持TX或RX功能不变的前提下,这4个管脚是否基于TX/RX功能自由组合呢?即是否支持下图中箭头所指的4种组合来使用。

USART串口

在我的印象中,STM32系列中只有最早推出的STM32F1系列的管脚复用功能稍微弱点外,其它系列在外设功能端口与GPIO复用方面表现得更为灵活。比方以USART1的复用管脚为例,STM32F1系列是以组为单位,仅支持PA9/PA10或PB6/PB7两种组合。而后推出的其它STM32系列,仍以USART1为例,都支持上面的4种组合。

换言之,后面推出的STM32系列管脚复用功能往往是以单个管脚进行配置,不再以组为单位进行配置锁定,为开发者自由安排管脚提供方便。具体到开篇话题本身,STM32F4系列芯片的USART1是完全支持上面列举的4种组合的。该发帖者后来进一步补充说,经过多个小时的验证发现也的确支持上面的4种使用组合。

其实,关于这个问题,完全不必要花几个小时来确认。

我们使用CubeMx进行配置时即可快速验证。比如当我们选择开启USART1后,CubeMx会先给我们安排两个可用USART1通信管脚。此时我们可以按住键盘上的CTRL键并保持住,然后鼠标左键点击当前安排的USART功能脚,并做拽拉动作,其它跟当前被拽拉脚具有相同功能的管脚就会闪动起来。然后我们就可以尝试去做替换,将当前功能脚替换为新的管脚。

通过这种方法,我们不难找出所有可能使用的组合。以STM32F4系列的USART1的复用管脚为例,基于CubeMx配置就可以直观地看到4种可使用的组合。见下面几幅图。

USART串口

USART串口

USART串口

USART串口

话题二、STM32F407 读保护从leve0设置leve1程序不再运行疑似丢失。

有人在程序调试阶段,通过用户代码修改选项字节开启读保护功能。发现实施此操作后,不仅程序停摆不运行了,STLINK也连不上开发板,感觉代码被擦除一般。

其实,这是个比较常见的话题。当我们通过用户代码开启读保护功能后,芯片开启保护机制。肯定会断开调试器不让我们继续代码的调试。试想下,如果都开启读保护了还能做程序调试,那还保护啥呢?此时发生上面提到的现象属正常。

开启了读保护不让调试了,可以理解。但我们欲用STLINK连接开发板抹掉读保护总可以吧。可以!

不过,你必须对开发板做断电再上电的操作。注意,若只是按复位键还不行。再用SLTINK连接,然后通过诸如STM32CubeProgrammer之类的工具修改读保护设置。

关于这点,在STM32手册里有相应的描述,我截图几份过来参阅,分别是STM32F0、STM32F4和STM32L4系列的,描述上不尽相同,但都有表达相同的意思。

USART串口

OK,今天的分享就到这里。下次再聊!






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分