欢迎光临散文网 会员登陆 & 注册

【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教

2023-06-13 15:49 作者:昵称1725  | 我要投稿


p63 中断的使用和HAL库中断回调处理机制

EXTI配置步骤

  1. 使能GPIO时钟
  2. 设置GPIO输入模式
  3. 使能AFIO/SYSCFG时钟
  4. 设置EXTI和IO对应关系
  5. 设置EXTI屏蔽,上/下沿
  6. 设置NVIC
  7. 设置中断服务函数

HAL库设置步骤(GPIO外部中断)

  1. 使能GPIO时钟
  2. GPIO/AFIO(SYSCFG)/EXTI(使用HAL_GPIO_Init一步到位)
  3. 设置中断分组
  4. 设置中断优先级
  5. 使能中断
  6. 设置中断服务函数

STM32仅有7个中断服务函数:

  • EXTI0-4共5个
  • EXTI5-9共1个
  • EXTI10-15共1个

通用外设驱动模型(四步法,1、4步)

HAL库中断回调处理机制

  • 中断服务函数(硬件中断服务函数)
  • HAL库中断处理共用函数(异常处理,清中断标志和,调用回调函数)
  • HAL库数据处理回调函数(各种回调函数,可有多个)


p88 定时器概述

课堂内容

  1. 定时器概述
  2. 基本定时器
  3. 通用定时器
  4. 高级定时器
  5. 课堂总结(掌握)

本节内容

  1. 软件定时原理
  2. 定时器定时原理
  3. STM32定时器分类
  4. STM32定时器特性表
  5. STM32基本、通用、高级定时器功能整体的区别

1.1 软件定时原理

  • 使用纯软件(CPU死等)的方式实现定时(延时)功能
  • 延时实现1:执行for语句,执行__nop();每次执行延迟时间与芯片主频有关。
  • 延时实现2:延迟时间乘以延时因子,然后循环递减(不精准的)

缺点

  1. 延时不精准
  2. CPU死等

1.2 定时器定时原理

  • 使用精准的时基,通过硬件的方式,实现定时功能
  • 定时器核心就是计数器
  • CLK经过PSC(预分频器),获得TIM CLK(计时器真正工作的时钟);计数器根据时钟计数,直到溢出,产生事件;计数器可以由APP自动重装载值

1.3 STM32定时器分类

定时器分类

  • 常规定时器:基本、通用、高级
  • 专用定时器:独立看门狗、窗口看门狗、实时时钟、低功耗定时器
  • 内核定时器:SysTick定时器

1.4 STM32定时器特性表

特性表(F1)

  • 基本定时器:TIM6、7;计数模式递增;捕获/比较通道0;无互补输出
  • 通用定时器:TIM2-5;计数模式递增、递减、中央对齐;捕获/比较通道4;无互补输出
  • 高级定时器:TIM1、8;计数模式递增、递减、中央对齐;捕获/比较通道4;有互补输出

共同特性:计数器位数16;计数模式递增;预分频系数1~65535;可以产生DMA请求;

H7特性表略

表格在开发指南中可以找到

1.5 STM32基本、通用、高级定时器功能整体的区别

  • 基本定时器:没有输入输出通道,常用作时基,即定时功能
  • 通用定时器:具有多路独立通道,可用于输入捕获/输出比较,也可用作时基
  • 高级定时器:具备通用定时器所有功能,具备带死区控制的互补信号输出、刹车输入等功能(可用于电机控制、数字电源设计等)

p89 基本定时器简介 框图 计数模式及溢出条件

本节内容

  1. 基本定时器简介
  2. 基本定时器框图
  3. 定时器计数模式及溢出条件
  4. 定时器中断实验相关寄存器
  5. 定时器溢出时间计算方法
  6. 定时器中断实验配置步骤
  7. 编程实战:定时器中断实验

2.1 基本定时器简介

  1. 基本定时器:TIM6/TIM7
  2. 主要特性:16位递增计数器(计数值0~65535);16位预分频器(分频系数1~65536);可用于触发DAC;在更新事件(计数器溢出)时,可产生中断/DMA请求

2.2 基本定时器框图

  1. 时钟源:来自RCC的TIMxCLK->内部时钟(CK_INT)
  2. 控制器
  3. 计数器(时基单元):CK_PSK->PSC(预分频器)--(CK_CNT)--> CNT(计数器);自动重载寄存器--> CNT计数器
  • PSC和ARR有影子寄存器
  • 影子寄存器实际上起作用,不可直接访问,实际上起到缓冲的作用
  • 写入寄存器的数值需要转移到影子寄存器才能起作用,依靠一个事件

事件

  • 溢出产生更新事件(U事件)、中断和DMA输出事件、UG位产生软件更新事件
  • 更新事件可使预装载寄存器的值加载到对应的影子寄存器
  • ARPE位决定ARR是否具有缓冲

定时器时钟源的来源






【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教的评论 (共 条)

分享到微博请遵守国家法律