STM32之AFIO介绍

发布者:梦想学院最新更新时间:2021-03-11 来源: eefocus关键字:STM32  AFIO  复用功能 手机看文章 扫描二维码
随时随地手机看文章

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


1、不是说使用了IO的复用功能就一定要启动RCC_APB2Periph_AFIO的Clock的,参考下图


只有使用了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用,毕竟这种重映射的情况太多,几乎所有外设都可以重映射,每个都标出来会非常混乱。


STM32中,USART2的CTS、RTS、TX、RX和TIM2的CH1~CH4都在PA0~PA3上面,具体要如何选择这两个功能呢?


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


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

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


一、保留USART2在PA口上,将TIM2完全重映射(Full Remap)到其他IO上,或者,如果你不用RTS和CTS的硬件流控制,PA0(CTS)和PA1(RTS)上对应的CH1和CH2是可以不用重映射的,只需要将Bit9:8改成10,也就是将CH3和CH4部分重映射到PB10和PB11上去,而CH1和CH2继续保留在PA0和PA1上。但这种情况下,PB10和PB11上的I2C2和USART3就不能用了。


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

关键字:STM32  AFIO  复用功能 引用地址:STM32之AFIO介绍

上一篇:STM32的CAN总线中继器设计及应用
下一篇:基于3G/4G多旋翼飞行器的视频传输系统

推荐阅读最新更新时间:2024-11-17 08:25

stm32中断服务函数c语言,STM32中断使用总结——不使用固件库
ST提供的固件库给我们很大的方面,但我十分不喜欢使用固件库因为它不简洁等一些原因,所以自己不断琢磨怎么用汇编和C语言编写自己想要的程序。以定时器TMI1上溢中断的产生为例总结一下这种方法。硬件条件是:外部晶振使用HIE=6MHz;目标是:定时器每10S进中断一次使LED闪烁。 首先要知道这个中断(TIM1上溢事件)的中断向量地址在哪?汇编部分就是编写一个跳转程序,用来保证在产生中断时会跳入自己写的C程序中,这个可以参考启动代码STM32F10X.S中的复位函数的编写,但要注意地址的对准,这里不在赘述。 然后根据需要编写一个中断处理程序,这个里面必须将TIM1的上溢中断标志清零(TIM1_SR中第0位),否则时间没到程序一直
[单片机]
stm32之S6D04H0 液晶驱动(寄存器版)
1、初始化命令问题:在S6D04H0中,命令是八位,参数也有第一次,第二次,次数之分,与一般的命令是八位或十六位,参数是一次性的十六位不同(如下图) 2、这些命令形式不同是不是有什么影响 3、是不是还没有设置关于横屏竖屏 4、这块LCD是我从单片机学习板上取过来的,会不会电平有什么问题,结果发现,IO口仍然是3.3v逻辑,然后,两边的vcc则需要5v,而且这块液晶上也集成了5v转3.3v芯片 而且后来去网上查了,大部分lcd不会出现这种情况 这个在此lcd的驱动芯片手册中也可查到 5、我尝试用了网上说兼容的型号HX8347-G的代码,用了后却丝毫没有半点反应 6、由于一直没搞懂fsmc的寄存器设置,网上关于它的寄存器设置
[单片机]
<font color='red'>stm32</font>之S6D04H0 液晶驱动(寄存器版)
stm32 7位数据位 usart_wordlength_
stm32 7位数据位如何设置?一般情况下设置数据位为8位、1个停止位,再设置每个发送字节的最高位为“1”,去掉收到字节的最高位即可。这样每个字节的最高位自动变成1个停止位。 stm32 7位数据位 usart_wordlength_处理代码如下:Table 155. Frame formats M bit PCE bit USART frame 0 0 | SB | 8 bit data | STB | 0 1 | SB | 7-bit data | PB | STB | 1 0 | SB | 9-bit data | STB | 1 1 | SB | 8-bit data PB | STB 但是值得注意的是,STM
[单片机]
STM32的断言机制——函数assert_param()
我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。 下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。 我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param(); 下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解, 函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型 #define IS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == GPIOA_
[单片机]
<font color='red'>STM32</font>的断言机制——函数assert_param()
关于STM32中断库函数写法
在STM32中中断的使用非常的频繁,其中EXTI 线 0~15:对应外部 IO 口的输入中断。 STM32F4 的 IO 口外部中断函数只有 7 个,分别为: EXPORT EXTI0_IRQHandler EXPORT EXTI1_IRQHandler EXPORT EXTI2_IRQHandler EXPORT EXTI3_IRQHandler EXPORT EXTI4_IRQHandler EXPORT EXTI9_5_IRQHandler EXPORT EXTI15_10_IRQHandler 中断线 0-4 每个中断线对应一个中断函数,中断线 5-9 共用中断函数 EXTI9_5_IRQHandler,中 断
[单片机]
STM32】模板建立常见错误
1.新建工程的时候编译出现如下错误(MDK4.12 使用v3.4的库) ..\CMSIS\stm32f10x.h(80): error: #35: #error directive: Please select first the target STM32F10x device used in your application (in stm32f10x.h file) 解决方法:双击错误进入出错的地方,在stm32f10x.h处 #if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined(STM32F10X_MD) && !defined (S
[单片机]
【<font color='red'>STM32</font>】模板建立常见错误
用于stm32Discovery的图像转代码取模小工具
最近拿着st的官方板子在开发图形界面,看了下代码是直接把整个像素32bit拷贝到控制器中Graphic RAM(就是一块SDRAM)中的,所以以往遇到的生成器都不能用,在内部则又是转换费时费力,占用内存 所以针对stm32的discovery lcd显示写了个图像代码生成的程序,可以直接生成32bit的ARGB格式代码 等后面发一个成熟点的版本,目前还是有些容易遇到的bug
[单片机]
用于stm32Discovery的图像转代码取模小工具
ST推M4 MCU,据称全球性能最强
  “全球每交付2个Cortex-M系列微控制器,其中1个就是STM32,” ST(意法半导体) 微控制器全球市场部总监Daniel Colonna自豪地告诉EEWORLD。 意法半导体微控制器全球市场部总监Daniel Colonna   为了进一步扩大ST Cortex-M微控制器产品阵营,近日,ST宣布STM32 F4系列微控制器产品上市,至此,ST共有超过250种相互兼容的M内核产品的型号。新推出的F4系列产品基于最新的ARM Cortex-M4内核,在现有STM32微控制器产品组合中新增了信号处理功能,并提高了运行速度。新产品继续沿用STM32的蝴蝶logo,昭示着新的F4系列的产品将继续在STM32 Cortex-
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved