stm32的afio啥时候要开启

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32的afio啥时候要开启相关的知识,希望对你有一定的参考价值。

参考技术A 当使用引脚的复用功能时,需要开启。具体的功能复用你可以查看技术手册,每个引脚的主功能和复用功能是什么。

关于使用STM32 SPI3的一些总结

总结一下spi3的问题,因为spi3的nss口与JTAG有共用引脚,所以配置错误会导致SPI3无法使用。需要注意以下三点就可以了: 
1.将PA15配置为普通IO口,GPIO_Mode_Out_PP 
2.开启AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 
3.关闭JTAG功能,使能SWD 
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE) ;

其他的SPI口正常配置,因为板子重启后默认为JTAG模式,虽然在调试时使用了SWD,但PA15依然不是普通的IO口,当把它重新配置时,一定要开启AFIO时钟,如果不开启的话,只有GPIO_PinRemapConfig(),会导致程序崩溃,在调试的时候会乱跳,具体原因我也不知道。

以上配置是我调试后的,肯定没问题。注意千万不要使用GPIO_Remap_SWJ_Disable ,因为这样就不能下载程序了,要开锁很麻烦的。


在使用stm32的时候, spi3和jtag口是有重合的, 如果要使用spi3 或者要把jtag口作为普通io口使用可参考如下配置:

1. 使用spi3接口, 参考 卢有亮 老师的教程 [BP19_网络PING实验], 该套代码实现了该项功能

2.  stm32的jtag口可以配置为SWD模式 这样能空余出来三个接口, 并且不影响程序的下载和调试, 关于如何配置为SWD模式可以参考上一篇博客. 

     将STM32的JTAG下载引脚:JTDO、JTDI、JTCK 配置普通IO口其实和配置为spi3 是一样的 只不过spi3还要开spi的时钟, 这里更改为开io口时钟即可, 其中最关键的两条指令是:
      1、打开复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,EANBLE);
      2、调用重映射函数:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag , 开启swd


以上是关于stm32的afio啥时候要开启的主要内容,如果未能解决你的问题,请参考以下文章

"stm32的AFIO"是啥意思?

STM32F103 AFIO时钟疑问

USART3不实用端口重映射,还用使能AFIO吗

为啥配置exti外设时,开启的是afio的时钟?

STM32中管脚利用

STM32 JTDO JREST复用为普通IO