-
Debug调试
Debug调试常见的方法 硬件调试 打印调试 调试器调试 常见的Debug工具一般集成的IDE都有自带的Debug工具, Keil, CubeIDE 命令窗口, 可以在这里使用命令进行操控 汇编窗口, 显示汇编命令 显示使用的变量以及它的类型 寄存器窗口, 指示CPU的工作状态 调用栈的函数, 可以获取函数的调用过程, 还会有函数中使用到的参数的具体数值 监视窗口, 可以直接进行拖拽或者右键add to 监控内存, 监控的时候需要在变量前面添加取址符号, ...…
-
HAL库驱动框架
HAL库驱动框架 外设初始化 外设使用对外设进行封装xx_HandleTypeDef(xx外设的句柄结构体) Instance成员, xx_TypeDef, 保存实际操控的对象typedef struct{ __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR...…
-
Systick定时器
Systick定时器是一个内核的外设, 内嵌在NVIC里面, 有一个24位的向下递减的自动重装载寄存器, 计数的周期为CLKSource, 可以配置这个时钟最高频率为72MHz一般来说Cortex-M的内核都有这样一个定时器一般用于操作系统, 用于任务的调度, 或者进行微妙毫秒级别的延时RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick 控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时...…
-
异常和中断, EXTI和事件控制器
异常和中断中断计算机运行的时候, 出现某些意外需要主机进行干预, 机器自动停止正在运行的程序, 转入处理程序, 处理完毕以后返回原先被暂停的程序继续进行STM32有异常以及中断, 这个是Cortex内核支持的, ST公司进行扩展异常是内核产生的, 中断一般是指连接到内核的外部器件产生, 他们触发的处理方式相同 优先级越小, 优先级越高, 除了固定的优先级, 其他的中断根据优先级分组进行配置, Cotex内核有8bit的优先级, 但是STM32只支持高四位也就是4bit的优先级配置 ST...…
-
复位以及时钟控制
复位以及时钟控制(RCC)复位有三种复位 系统复位: 将复位除了时钟控制寄存器CSR中的复位标志和备份区域以内的寄存器以外的所有寄存器 电源复位: 复位除了备份区域以外的所有寄存器 后备域复位: 备份区有两个专门的复位, 只影响备份区域 当以下事件中的一件发生时,产生一个系统复位: 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 通过查看RCC_...…
-
启动过程
启动过程ARM-CM3处理器使用的是哈佛结构 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如下图所示。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度 哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。 哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运...…
-
GPIO板级支持包的构建
GPIO板级支持包的构建板级支持包是基于主板的硬件和操作系统之间的一层, 一般认为是操作系统中的一部分, 主要是实现对操作系统的支持, 为上层的驱动程序提供访问硬件的函数包, 让他能更好的运行在主板HAL库驱动=> LED,按键 => 访问硬件的接口 => 应用程序对板子上的资源功能进行实现, 给出用户程序的接口…
-
初识HAL库
初识HAL库CMSIS标准以及库法的层次关系CMSIS层: 内核通用的一些接口使用的两种模式 自己移植, 不推荐 使用CubeMX进行配置自己进行移植主要是移植CMSIS文件夹以及HAL_Driver两个文件夹之后添加文件, 添加一个启动文件, 之后添加一个CMSIS文件夹下的对应的系统设置的文件在添加库文件的时候不添加template文件以及ll库的文件移植之后添加两个宏USE_HAL_DRIVER,STM32F103xE添加之后依旧在报错找不到一个文件/** **********...…