STM32F10x基础知识

其一

端口重映射,即将某些复用功能定向映射到其他IO口上去,达到提高IO利用率的作用。
可以重映射的外设/功能有CAN1、JTAG/SWD、ADC、定时器、USART、I2C1、SPI1、OSC_IN/OSC_OUT
需要注意的是,OSC32_IN/OSC32_OUT用做普通GPIO时,需要重映射为PC14/PC15(尽管仍然用原引脚)

复用功能 USART1_REMAP=0 USART1_REMAP=1
USART1_TX PA9 PB6
USART1_RX PA10 PB7

以USART1为例,使用重映射需做以下配置

使能GPIOB时钟:

使能串口 1 时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

使能 AFIO 时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

开启重映射:

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);

其二

NVIC中断优先级管理。
工程项目中使用到中断时,需在STM32启动时配置中断分组。STM32将中断分为5组(组0-4),规定了抢占优先级和响应优先级的位数。具体分配关系如下:

AIRCR[10:8] bit[7:4]分配情况 分配结果
0 111 0:4 0位抢占优先级,4位响应优先级
1 110 1:3 1位抢占优先级,3位响应优先级
2 101 2:2 2位抢占优先级,2位响应优先级
3 100 3:1 1位抢占优先级,3位响应优先级
4 011 4:0 0位抢占优先级,4位相应优先级

注意几点
1. 数值越小所代表的优先级程度越高
2. 高抢占优先级的中断可以打断正在进行的低抢占优先级中断
3. 高抢占优先级的中断可以打断正在进行的低抢占优先级中断

使用库函数实现中断分组和中断优先级管理

中断优先级分组函数 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),入口参量为NVIC_PriorityGroup_x(x可以是0-4的任意数)。
该函数对中断的优先级进行分组,且在系统中只能被调用一次,一旦确定分组最好就不要修改。

中断初始化函数void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
入口参量结构体定义如下:

typedef struct
{
    uint8_t NVIC_IRQChannel;
    uint8_t NVIC_IRQChannelPreemptionPriority;
    uint8_t NVIC_IRQChannelSubPriority;
    FunctionalState NVIC_IRQChannelCmd;
} NVIC_InitTypeDef;

结构体中各元素依次是中断名(定义在stm32f10x.h中)、抢占优先级、响应优先级、是否使能中断(ENABLE or DISABLE)
使用该函数可实现对指定中断的初始化。

你可能感兴趣的:(STM32自学)