STM32_架构_笔记

STM32时钟系统:

5个时钟源

1、HSI 高速内部时钟、RC振荡器,8Mhz

2、HSE高速外部时钟,外部晶振,4-16Mhz

3、LSI 低速内部时钟、RC振荡器,独立看门狗/RTC的时钟源

4、LSE低速外部时钟,32.768Khz,RTC时钟源

5、PLL锁相环倍频输出,时钟输入可选HSI/2、HSE、HSE/2,倍频可选2-16倍,输出最大频率不超过72Mhz

PS:

当需要USB模块时,PLL必须使能,时钟频率配置为48Mhz或72Mhz;

APB1连接低速外设,包括电源、备份、CAN、USB、I2C1/I2C2、UART2/UART3等;

APB2连接高速外设,包括UART1、SPI1、timer1、ADC1、ADC2、普通IO(PA-PE)、第二功能IO口等;

需要使用某个模块前必须先使能对应时钟;

使用复用功能时,需使能2个时钟:GPIO时钟、复用外设时钟


STM32重映射


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE); //打开重映射时钟和USART重映射后的I/O口引脚时钟, 

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);  //I/O口重映射开启

//配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
PS:

必须打开AFIO时钟;

SPI1重映射必须关闭JTAG;

个别存在部分重映射:

STM32_架构_笔记_第1张图片


STM32的NVIC中断优先级管理

NVIC_PriorityGroup_0 => 所有4位用于指定响应优先级(16种)

NVIC_PriorityGroup_1 => 最高1位用于指定抢占式优先级,最低3位用于指定响应优先级(8种)

NVIC_PriorityGroup_2 => 最高2位用于指定抢占式优先级,最低2位用于指定响应优先级(4种)

NVIC_PriorityGroup_3 => 最高3位用于指定抢占式优先级,最低1位用于指定响应优先级(2种)

NVIC_PriorityGroup_4 => 所有4位用于指定抢占式优先级


STM32库文件说明



文件名 功能描述 具体功能说明
core_cm3.c
core_cm3.h
cortex-M3内核及其设备文件 访问cortexM3内核机器设备:NVIC、SysTick等
访问cortexM3的CPU寄存器和内核外设的函数
stm32f10x.h 微控制器专用头文件 重要,主要包含系统寄存器定义声明以及包装内存操作。
system_stm32f10x.c
system_stm32f10x.h
微控制器专用系统文件 函数SystemInit:用来初始化微控制器
函数Sytem_ExtMemCtl:on过来配置外部存储控制器,位于文件startup_stm32f10x_xx.s,在跳转到main前调用SystemFrequency,该值代表系统时钟频率
startup_stm32f10x_XX.s 启动文件 堆栈初始化、中断向量表和中断函数定义
stm32f10x_conf.h 固件库配置文件 更改包含的外设头文件选择固件库所使用的外设
stm32f10x_it.c
stm32f10x_it.h
外设中断函数文件 用户可以加入自己的中断程序代码,对于指向同一个中断向量的不同中断请求,用户可以通过判断外设的中断标志位来确定中断源,执行相应的中断服务函数
stm32f10x_ppp.c
stm32f10x_ppp.h
外设驱动函数文件 包含相关外设的初始化配置和部分功能应用函数,这部分是进行编程功能实现的重要组成部分































你可能感兴趣的:(STM32_架构_笔记)