历史上的今天
今天是:2024年08月27日(星期二)
2018年08月27日 | STM32常用管脚重定义外设
2018-08-27 来源:eefocus
为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。(注意:重定义的引脚是固定的,不是想重定义到哪个引脚就可以到哪个引脚的!重映像一般只适用于100和144脚的封装!(具体看哪个外设))
一、常用可以重定义管脚外设。
1、定时器4的通道1到通道4可以从端口B重映射到端口D。

2、TIM1复用功能重映像。

3、USART1重映像。

4、I2C1复用功能重映射。

5、SPI1重映像。

二、管脚重映射配置。
1、①事件控制寄存器(AFIO_EVCR)、②复用重映射和调试I/O 配置寄存器(AFIO_MAPR)、③外部中断配置寄存器1(AFIO_EXTICR1)、④外部中断配置寄存器2(AFIO_EXTICR2)、⑤外部中断配置寄存器3(AFIO_EXTICR3)、⑥外部中断配置寄存器4(AFIO_EXTICR4),对以上寄存器进行读写操作前,应当首先打开AFIO(备用功能I/O)的时钟。
2、举例(以配置SPI1重映射为例)。
<1>RCC->APB2ENR|=1<<0;//开启AFIO时钟
<2>RCC->APB2ENR|=1<<3;//开启PB时钟(开启待重映射管脚的时钟)
RCC->APB2ENR|=1<<2;//开启PA时钟(开启待重映射管脚的时钟)
<3>AFIO->MAPR|=1<<0; //SPI1端口复用功能开启
<4>GPIOB->CRL&=0XFF000FFF;// PB3、4、5配置为复用功能输出
GPIOB->CRL|=0X00BBB000;
GPIOA->CRH&=0X0FFFFFFF;// PA15配置为复用功能输出
GPIOA->CRH|=0XB0000000;
<5>因为JTAG占用了PB3/PB4两个引脚,而这两个引脚恰好是SPI1映射后的引脚,所以我们要关闭JTAG-DP,关闭SW-DP(系统复位后的默认状态是启用SWJ但没有跟踪功能);

操作寄存器关闭 :AFIO->MAPR|=4<<24;
操作库函数关闭 :GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
<6>配置完成后即可将原来的管脚功能输入输出重新映射到重映射管脚上去,使用的时候是一样的。
下一篇:STM32的AFIO口简介
史海拾趣
|
实例分为两部分,第1部分连续输入数据处理的电路设计是我们的课程设计,有详细的设计过程(分析过程,数据流图,以及状态机,源代码仿真和综合电路图),另一个是老师给的例题,有100多个例子吧,不过只有源代码和题目。希望能给大家做一个参考!!… 查看全部问答> |
|
我先说一下我的需求,就是要在播放影片的画面上面显示影片的码率之类的. 假设现在影片的码率是700kbps,我要在影片的某个位置显示出来,比如说左上角,这个怎么做出来呢? 或者给我指条明路. 谢谢 PS: 现在TCPMP能在我的机器上面跑了,也能正常解码.… 查看全部问答> |
|
功能描述: 用单片机实现传感器检测功能,通过两个按键和一个LED显示模块来实现设置检测阀值的大小,2个按键分别为"加1"和"减1"功能,LED上显示的当前阀值大小.读入的传感器信号与设置的阀值进行比较,达到所设阀值大小输出报警.请 ...… 查看全部问答> |
|
一直从事asp.net开发,对wince开发一无所知。 目前有一个gps设备,需要开发征对此设备的应用程序开发。该设备是wince 5.0操作系统。 我使用的是vs 2008做为开发工具(C#)。 我在vs2008中新建项目-智能设备 右侧仅有智能设备选项,请问我还需要安 ...… 查看全部问答> |
|
现在的问题是,程序无法检测到其中的位数,并做出相应的处理 表象就是:在串口调试助手中输入B****E,无任何返回值 程序如下: #include //工作频率7.3728Mhz #include unsigned ch ...… 查看全部问答> |
|
通常我们加载wince系统,总是编译好eboot然后下载到flash里面,根据菜单提示下载NK。而实际的产品中,可以不用BOOTLOADER,那它是怎么实现系统加载的? 还有个问题,就是OAL的代码也可以完成所有的bootloader的功能,为什么一定要写个bootloader? ...… 查看全部问答> |
|
【求助】想在嵌入式板(S3C2410)用java语言编写程序在LCD上显示图像和视频,我该如何入手? 最近在学习嵌入式,想在嵌入式板(S3C2410)用java语言编写程序在LCD上显示图像和视频,到现在没有一点头绪,不知道从什么地方入手。在嵌入式linux上的java虚拟机用什么?… 查看全部问答> |




