【AT-START-F403A测评】第5篇 F403A 复用和重映射
[复制链接]
今天还有点无聊,陪玩娃上课回来,就无意间想看看这个重映射,最近正好在搞意法半导体的M0和M3的复用和重映射部分,正好看下雅特力的
STM32上有很多I/O口,也有很多的内置外设I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。
我们来看下雅特力的
就拿JTAG举例子吧
作为普通IO口需要重映射
GPIO_PinsRemapConfig(GPIO_Remap_SWJ_AllDisable, ENABLE);
还需要配置下GPIO
GPIO_InitType GPIO_InitStructure;
/* Configure PA.13 (JTMS/SWDAT), PA.14 (JTCK/SWCLK) and PA.15 (JTDI) as
output push-pull */
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_13 | GPIO_Pins_14 | GPIO_Pins_15;
GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
细细来看 雅特力M4的重映射与ST的M3完全相同
下图为意法半导体M3的
从上图可以看出,所有的重映射是针对功能,比如针对定时器1的没有重映射、部分重映射、完全重映射进行,选择好了之后管脚就固定了,不能针对某个固定引脚随意的分配。
不知道为啥M3和M0的方式不太一样
M0翻看手册都是复用,但是这个复用怎么有感觉和重映射差不多,
我有点晕头转向了
看一下M0的配置代码
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
M0是针对每个管脚进行,所有管脚独立。所以你可以针对不同的管脚随意配置功能
|