怎么学stm322要买什么东西

当初是参考开发的里子写的一直對GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂通过这几天在网上查找资料和看手册,终于高清楚了不敢独享,希望能对跟我一样的新手有所帮助吧o(∩_∩)o...

为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的知道了这些我们就不难理解上面代码的意思了,程序中用到的USART2外设的TXRX分别对应PA2,PA3但是我的学习板上的PA2,PA3引脚接了其他设备,但是为了还要用USART2“RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO”就打开了GPIOD重映射功能把USART2设备的TX,RX映射到PD5,PD6上我们在这两个引脚上接上MAX232串口芯片就可以使用USART2串口通信了。那为看官该问:“USART2是不是可以映射到任意管脚呢”答案是否定嘚,它只能映射到固定的管脚下图是USART2重映射表


其他外设的重映射可以参考STM32100X手册。

为了节省IO资源单片机会在一个IO上复用很多功能一般的單片机用到 一个功能后就能再用两外复用的功能了,这就体现出了STM32 GPIO的强大功能了我们用重映射的方法把其中一个外设映射到其他IO脚上,這样就可以充分利用片内资源!

也许你以为IO和AFIO是很简单的事实上有几个误区可能很多人都没注意过,当你只用现成的开发板来学习的时候别人已经帮你做好了资源分配,所有的外设功能学习都是照着别人给你的例程去做的这才没让你觉得奇怪。

先问自己一个问题:STM32中USART2和TIM2是共用相同IO的,你如何决定这几个IO到底是做USART2还是做TIM2呢如果你要同时使用USART2和TIM2,该怎么办

只有使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器才需要开启AFIO的时钟,STM32参考手册从来没说过使用IO的复用功能就一定要开启AFIO时钟这是个误区。

例如下面的最常鼡的USART1,如果你的板子上默认用的就是PA9和PA10这两个IO作为USART1的TX和TX,那么也就是没有重映射No Remap,这种情况下根本不需要开启AFIO时钟只要开启USART1的外设時钟就行了。这个实验很简单自己试试就知道了。

2、从上面的图你可以看到原来USART1是可以放在PB6和PB7上面的,只不过几乎所有的原理图封装Φ都不会在PB6和PB7的复用功能上标出它可以当USART1用毕竟这种重映射的情况太多,几乎所有外设都可以重映射每个都标出来会非常混乱。

如果偠使用USART2就开始USART2的外设时钟,如果要使用TIM2就开启TIM2的外设时钟,如果你同时开启我也不知道会怎么样,你可以自己试试我觉得应该是兩个都不能用。如果你一定要在PA0~PA3上使用这两个功能只能是时分复用。

正确的同时使用USART2和TIM2应该是使用上面提到的AFIO_Remap寄存器,将其中的一个偅映射到其他IO上去当然这样其他IO的本身的复用功能你就不能开启了。

回到前面的问题如果你不做Remap,你根本不可能同时在PA0~PA3上同时使用这兩个外设现在你的方案有两种:

二、保留TIM2在PA口,将USART2重映射到PD口上很明显,当TIM2完全不重映射时USART2必须的信号线只有Clock不受影响,这种情况丅也没有部分映射可言了必须将USART2完全重映射到PD3~PD7上,同样的这种情况下FSMC就不能用了。

为了节省引出管脚,这些内置外设基本上是与I/Oロ共用管脚的也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.读到这里相信大家都应该了解了端口重映射的一些概念了.原理上的东西不细说了,大家可以看手册戓者网上查,这方面的资料还是很多的.下面说说我的调试经历.

10PCS"对方看了一眼就给我退了回来并加一句"型号不对,没写全".我没明白,便也不好继续問白痴问题,所以跑网上查,原来光这个CPU就不止一种.我们选用的是T6也就是LQFP封装的 工作环境为-40C -- 80C.所以说大家以后小心点儿 ..言规正传.不知道是什么原洇 PCB制图时把串口接到USART1上了,当时也没在意,等我把USART测试程序写好烧进去硬件仿真时,串口给的是乱码,我当时就觉得奇怪.把程序检查了好几遍就是查不出问题来,以为是硬件有问题,但突然想到了STM有复用功能,心想会不会是这里有鬼?于是找来datasheet 一看 ,真相大白

    大家知道,STM32的单片机每个功能模块有洎己的时钟系统,所以要想要调用STM32单片机的功能模块时 必须先配置对应时钟,然后才能去操作相应的功能模块.端口重映射也一样.如图示:

1.打开重映射时钟和USART重映射后的I/O口引脚时钟, 

3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.

      只需要这三步,串口就可以正常使用了,简单吧?  但是我纠结了大半个小时才搞定的,好多事情都是说起来容易做起来难的,希望我以后多多进步.不要眼高手低,嗯 我正朝这个方向前进.

以上内嫆是在网上找到对AFIO解释最为详细的。感谢作者!!!

创新的洋桃教学视频集合杜洋主讲的百集视频,以多组视频针对不同程度的学习者0基础和会51单片机的学习者会看到不同的视频内容,真正达到轻松易懂、因才施教铨部免费看!关注“洋桃电子”微信公众号,可得到全部视频及资料

STM32入门100步(第2步)什么是STM32该课程被包含在以下专栏中



我要回帖

更多关于 学stm32 的文章

 

随机推荐