这里分享我们在STM32应用中可能遇到的两个小话题,尤其对于STM32应用新手。
话题一、STM32管脚重映射支持任意组合吗?
有人使用STM32F4芯片做开发,用到USART1外设。发现有4个GPIO管脚可以支持USART1复用,即PA9,PA10,PB6,PB7。
他在21论坛发帖咨询在保持TX或RX功能不变的前提下,这4个管脚是否基于TX/RX功能自由组合呢?即是否支持下图中箭头所指的4种组合来使用。
在我的印象中,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种可使用的组合。见下面几幅图。
话题二、STM32F407 读保护从leve0设置leve1程序不再运行疑似丢失。
有人在程序调试阶段,通过用户代码修改选项字节开启读保护功能。发现实施此操作后,不仅程序停摆不运行了,STLINK也连不上开发板,感觉代码被擦除一般。
其实,这是个比较常见的话题。当我们通过用户代码开启读保护功能后,芯片开启保护机制。肯定会断开调试器不让我们继续代码的调试。试想下,如果都开启读保护了还能做程序调试,那还保护啥呢?此时发生上面提到的现象属正常。
开启了读保护不让调试了,可以理解。但我们欲用STLINK连接开发板抹掉读保护总可以吧。可以!
不过,你必须对开发板做断电再上电的操作。注意,若只是按复位键还不行。再用SLTINK连接,然后通过诸如STM32CubeProgrammer之类的工具修改读保护设置。
关于这点,在STM32手册里有相应的描述,我截图几份过来参阅,分别是STM32F0、STM32F4和STM32L4系列的,描述上不尽相同,但都有表达相同的意思。
OK,今天的分享就到这里。下次再聊!
相关文章