STM32中断学习笔记
中断和事件
- 嵌套向量中断控制器(NVIC)
- 特性
- 68个中断通道
- 16个优先等级
NVIC与处理器核接口直接相连,实现低延时中断处理和高效的晚到中断处理
2.系统滴答定时器
一、构架HAL固件
1、CMSIS架构
CMSIS核心层是CMSIS标准最重要的,包括内核函数层和设备外设访问层:
- 内核函数层:用于访问内核寄存器的名称、地址定义。ARM提供
- 设备外设访问层:片上的核外外设的地址和中断定义。芯片厂商提供
2、库文件、目录
- Drivers:官方的CMSIS库,HAL库
- Project:针对demo板的例子和工程模板
- Utilities:公用组件
Driver目录下的两个重要文件夹:
2.1 CMSIS目录
-
Device:具体芯片相关文件
system_stm32f1xx.c 文件:STM32芯片上电后初始化系统时钟、扩展外部存储器用的函数
strartup_STM32F103xx.s:为 STM32F103芯片的启动文件
stm32F103xx.h 文件:STM32 中所有的外设寄存器地址和结构体类型定义 -
Include:内核相关文件,包进入内核的接口,定义内核相关寄存器。
- 参考的资料:《cortex_M3_Technical Reference Manual》、《Cortex®-M3 内核编程手册 》
2.2 STM32F1xx_HAL_Driver
这里的文件属于 CMSIS 之外的的、芯片片上外设部分。
ST 公司针对每个 STM32 外设而编写的库函数文件这类外设文件统称为:stm32f1xx_hal_ppp.c 或stm32f1xx_hal_ppp.h 文 件,PPP表示外设名称。若我们开发的工程中用到了 STM32 内部的 ADC,则至少要把这两个文件包含到工程里。
工程文件
- 必须用到其中的四个文件:core_cm3.h、core_cmFunc.h、corecmInstr.h、core_cmSimd.h
- 添加 src 文件夹中 stm32f1xx_it.c 和 inc 文件夹中和stm32f1xx_it.h、stm32f1xx_hal_conf.h 这三个文件。
- stm32f1xx_it.c:这个文件是专门用来编写中断服务函数
- stm32f1xx_hal_conf.h:这个文件被包含进 stm32f103xx.h 文件。使用这个配置文件根据芯片型号增减 ST 库的外设文件,另外时钟源配置也是在这里进行设置
文件目录:STM32Cube_FW_F4_V1.19.0\Projects\STM32F103ZI-Nucleo\Templates
库函数文件关联:
新建工程
1、目录
名称 | 作用 |
---|---|
Doc | 用来存放程序说明的文件,由写程序的人添加 |
Libraries | 存放的是库文件 |
Listing | 存放编译器编译时候产生的** C/汇编/链接的列表**清单 |
Output | 存放编译产生的调试信息、hex 文件、预览信息、封装库等 |
Project | 用来存放工程 |
User | 用户编写的驱动文件 |
2、存放内容
CMSIS存放:
3、新建工程
存放在Project目录下的RVMDK目录下面
新建的工程添加5个组文件夹:
名称 | 作用 |
---|---|
STARTUP | 存放汇编的启动文件;startup_STM32F103xe.s |
STM32F1xx_HAL_Driver | 与 STM32 外设相关的库文件 stm32f1xx_hal.c stm32f1xx_hal_ppp.c(ppp 代表外设名称) |
USER | 用户编写的文件: main.c:main 函数文件,暂时为空 stm32f1xx_it.c跟中断有关的函数都放这个文件,暂时为空 |
DOC | 工程说明.txt:程序说明文件,用于说明程序的功能和注意事项等 |
本文来自博客园,作者:登云上人间,转载请注明原文链接:https://www.cnblogs.com/lj15941314/p/14720647.html