端口复用与重映射

正在学习stm32,其中部分关于io口复用(default)和重映射(remap)记录如下

端口复用配置过程

以PA9,PA10配置为串口1为例

1、GPIO端口时钟使能

RCC_APB2PeriphColckCmd(RCC_APB2Periph_GPIOA,ENABLE);

复用外设时钟使能

RCC_APB2PeriphColckCmd(RCC_APB2Periph_USART1,ENABLE);
//

端口模式设置。GPIO_Init()函数。查表,《中文手册》P110


端口重映射

以串口1为例

1、使能GPIO时钟(重映射后的IO);

2、使能功能外设时钟(例如串口1);

3、使能AFIO时钟,重映射必须使能AFIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

开启重映射:(这个函数可以在gpio.h里找到)

GPIO_PiNRemapConfig(GPIO_Remap_USART1,ENABLE);

以下三种情况应该打开AFIO辅助功能时钟

AFIO_MAPR:配置复用功能重映射

AFIO_EXTICRX:配置外部中断线映射

AFIO_EVCR:配置EVENTOUT事件输出


F103有60个中断《中文》9.1.2中有详细的

如此多的中断,其管理方法是:

1、NVIC中断优先级分组(于SCB->AIRCR中设置)

将中断分为0~4组,每组4个位用来设置抢占优先级和响应优先级。例如组0有0位抢占优先级和4位响应优先级

2、根据抢占优先级和响应优先级判断先执行哪个中断。

中断优先级的设置要用到IP寄存器,用NVIC_Init函数设置(这个函数在misc.c里有)

中断使能寄存器ISER[],有8个,每个32位,一个位控制一个中断使能,只得用到ISER[0]和ISER[1]

posted @ 2020-10-31 22:59  ShadowEast  阅读(384)  评论(0)    收藏  举报