假期备战蓝桥杯stm32学习笔记(一)

2019-04-14 18:52发布

在core_cm3.c文件中有关于类型的定义   Core_cm3.c与启动文件一样都是底层文件 Ststem_stm32f10x.c文件是用来设置系统时钟和总线时钟 实现系统时钟的时候要用到 PLL(锁相环),需要操作寄存器。寄存器十一存储器映射的方式访问的。所以 这个c文件需包含stm32f10x.h Stm32f10x.h包含了 stm32中的寄存器地址和结构体类型定义。   启动文件的作用: 初始化堆栈指针sp 初始化程序计数器指针pc 设置堆、栈的大小。 设置异常向量表的入口地址 配置外部SRAM作为数据存储器 设置C库的分支入口__main 调用了ststem_stm32f10x.c文件中的SystemIni()函数配置系统时钟   Stm32f10x_it.c是专门写中断服务函数的,定义了一些系统异常的接口 其他的普通中断函数由我们自己添加   Stm32f10x_conf.h 文件被包含进了stm32f10x.h.用来配置使用了哪些外设的 头文件,可以把用不到的头文件注释掉
PERIPH_BASE = 0x40000000, 0x40000000这个地址是偏上512Mb寻址空间的第一个地址。即外设基地址、   APB2PERIPH_BASE = PERIPH_BASE + 0x10000.因为stm32的不同外设挂在不同的总线上。Stm32有AHB总线、APB2总线、和APB2总线。 那APB2PERIPH_BASE为APB2总线外设基地址、 APB1 = 0x40000000 AHB = 0x40018000   STM32 参考手册的各个寄存器左上角一般有。地址偏移   这个地址偏移。这就是该寄存器组对应所在寄存器组基地址的偏移量。   Stm32为了实现低功耗, 设计了一个功能完善但非常复杂的时钟系统。普通的MCU一般只要设置好GPIO寄存器就可以使用了,但是STM32还有一个步骤就是开启外设时钟。   STM32有4个时钟源 1.高速外部时钟(HSE):以外部晶振作为时钟源,晶振频率可取范围为4~16MHz 2.高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,不稳定 3.低速外部时钟(LSE):以外部晶振作为时钟源,主要提供给实时时钟模块,所以一般采用 32.768kHz 4.低速内部时钟(LSI):由内部RC振荡器产生,也提供给实时时钟模块,频率大约40kHz   与我们开发密切相关的时钟。 1.SYSCLK:系统时钟,是STM32大部分器件的时钟来源, 主要由AHB预分频器分配到各个部件   2.HCLK: 有AHB预分频器直接输出得到, 他是高速总线AHB的时钟信号, 提供给存储器、DMA及Cortex内核, 是Cortex内核运行的时钟,CPU主频就是这个信号,它的大小与STM32运算速度、数据存取速度密切相关。   3.FCLK:同样由AHB预分频器输出得到,是内核的“自由运行时钟”。 “自由”表现在它不来自时钟HCLK, 因此在HCLK时钟停止时FCLK也继续运行。它的存在可以保证,在处理其休眠时也能够采样到终端和跟踪事件,它与HCLK互动同步。   4.PCLK1: 外设时钟, 由APB1预分频器输出得到,最大分频为36MHz, 提供给挂载在APB1总线上的外设。   5.PCLK2: 外设时钟, 由APB2预分频器输出得到,最大分频为36MHz, 提供给挂载在APB2总线上的外设。   每个外设都配备有外设时钟的开关, 当不使用某个设备时, 可以把这个外设时钟关闭, 从而降低功耗, 所以,当我们使用外设的时候就要记得开启外设时钟。