端口复用与重映射
正在学习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]

浙公网安备 33010602011771号