stm32week17+18+19+20

发布于:2025-06-26 ⋅ 阅读:(21) ⋅ 点赞:(0)

stm32学习

十二.串口

5.USART的HAL库用法

USART/UART异步通信配置步骤:

  1. 配置串口工作参数:HAL_UART_Init();
  2. 串口底层初始化:HAL_UART_MspInit();
  3. 开启串口异步接收中断:HAL_UART_Receive_IT();
  4. 设置优先级,使能中断:HAL_NVIC_SetPriority();、HAL_NVIC_EnableIRQ();
  5. 编写中断服务函数:USARTx_IRQHandler();、UARTx_IRQHandler();
  6. 串口数据发送:USART_DR、HAL_UART_Transmit();

十三.看门狗

1.IWDG

Independent watchdog,独立看门狗
本质:产生系统复位信号的计数器
喂狗:在计数器数到0之前,将计数器复位

2.WWDG

Window watchdog,窗口看门狗
与IWDG的区别:需在窗口内喂狗(早于下限或晚于上限均复位),可检测超时和异常提前喂狗,配置复杂

应用场景:
IWDG:适用于主时钟可能故障、对可靠性要求极高的场景(如安全系统),独立工作,对时间精度要求低
WWDG:适用于需精确控制复位时间的场景(如实时任务监控),通过窗口严格监控,确保任务在规定时段内运行

十四.TIMER

1.概述

软件定时原理:用纯软件(CPU死等)的方式实现定时功能,不精准,且拖累CPU
硬件定时:用精准的时基,实现定时功能

STM32定时器分类:

图片消失了

整体的区别:

图片消失了

2.配置步骤

  1. 配置定时器基础工作参数:HAL_TIM_Base_Init()
  2. 定时器基础MSP初始化:HAL_TIM_Base_MspInit(),配置NVIC、CLOCK
  3. 使能更新中断并启动计数器:HAL_TIM_Base_Start_IT()
  4. 设置优先级,使能中断:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 编写中断服务函数:TIMx_IRQHandler
  6. 编写定时器更新中断回调函数:HAL_TIM_PeriodElapsedCallback()

3.PWM

通用定时器PWM输出实验配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_PWM_Init()
  2. 定时器PWM输出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置PWM模式/比较值等:HAL_TIM_PWM_ConfigChannel()
  4. 使能输出并启动计数器:HAL_TIM_PWM_Start()
  5. 修改比较值控制占空比(可选):__HAL_TIM_SET_COMPARE()
  6. 使能通道预装载(可选):__HAL_TIM_ENABLE_OCxPRELOAD()

4.通用定时器输入捕获脉宽测量

输入捕获脉宽测量是微控制器利用内部定时器的 输入捕获功能 来测量外部脉冲信号宽度的技术。这一功能在电机控制、信号检测、通信协议解析等场景中广泛应用

配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_IC_Init()
  2. 定时器输入捕获MSP初始化:HAL_TIM_IC_MspInit()配置NVIC、CLOCK、GPIO
  3. 配置输入通道映射、捕获边沿:HAL_TIM_IC_ConfigChannel()
  4. 设置优先级,使能中断:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 使能定时器更新中断:__HAL_TIM_ENABLE_IT()
  6. 使能捕获、捕获中断及计数器:HAL_TIM_IC_Start_IT()
  7. 编写中断服务函数:TIMx_IRQHandler()
  8. 编写更新中断和捕获回调函数:HAL_TIM_PeriodElapsedCallback()、HAL_TIM_IC_CaptureCallback()

5.通用定时器脉冲计数

配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_IC_Init()
  2. 定时器输入捕获MSP初始化:HAL_TIM_IC_MspInit()配置NVIC、CLOCK、GPIO
  3. 配置定时器从模式等:HAL_TIM_SlaveConfigSynchro()
  4. 使能输入捕获并启动计数器:HAL_TIM_IC_Start()
  5. 获取计数器的值:__HAL_TIM_GET_COUNTER()
  6. 设置计数器的值:__HAL_TIM_SET_COUNTER()

6.高级定时器

输出指定个数PWM配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_PWM_Init()
  2. 定时器PWM输出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置PWM模式/比较值等:HAL_TIM_PWM_ConfigChannel()
  4. 设置优先级,使能中断:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 使能定时器更新中断:__HAL_TIM_ENABLE_IT()
  6. 使能输出并启动计数器:HAL_TIM_PWM_Start()
  7. 编写中断服务函数:TIMx_IRQHandler()
  8. 编写更新中断和捕获回调函数:HAL_TIM_PeriodElapsedCallback()

输出比较模式配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_OC_Init()
  2. 定时器PWM输出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置输出比较模式:HAL_TIM_OC_ConfigChannel()
  4. 使能通道预装载:__HAL_TIM_ENABLE_OCxPRELOAD()
  5. 使能输入捕获并启动计数器:HAL_TIM_OC_Start()
  6. 修改捕获/比较计数器的值:__HAL_TIM_SET_COMPARE()
死区控制、刹车
图片消失了

元器件有延迟特性,所以通电后会有一段死区时间
死区会导致 稳态精度下降、执行器抖动、能耗增加,所以要有死区控制系统
刹车:让电机快速停转,stm32可以通过寄存器输出刹车信号

配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_PWM_Init()
  2. 定时器PWM输出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置输出比较模式:HAL_TIM_OC_ConfigChannel()
  4. 配置刹车功能、死区时间等:HAL_TIMEx_ConfigBreakDeadTime()
  5. 使能输出并启动计数器:HAL_TIM_PWM_Start()
  6. 使能互补输出、主输出、计数器:HAL_TIMEx_PWMN_Start()
PWM输入模式

配置步骤:

  1. 配置定时器基础工作参数:HAL_TIM_IC_Init()
  2. 定时器PWM输出MSP初始化:HAL_TIM_IC_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置输出比较模式:HAL_TIM_IC_ConfigChannel()
  4. 配置从模式,触发源等:HAL_TIM_SlaveConfigSynchro()
  5. 设置优先级,使能中断:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  6. 使能输入捕获并启动计数器:HAL_TIM_IC_Start()、HAL_TIM_IC_Start_IT()
  7. 编写中断服务函数:TIMx_IRQHandler()
  8. 编写输入捕获回调函数:HAL_TIM_IC_CaptureCallback()

十五.某些外设

1.MPU

f1没有
memory protection unit内存保护单元
功能:

  1. 设置不同的存储区域的存储器访问权限
  2. 设置存储器(内存和外设属性):可缓存、可缓冲、可共享

三种内存类型:

  1. Normal memory:CPU以最高效的方式加载和存储字节
  2. Device memory:加载和存储要严格按照次序进行
  3. Strongly ordered memory:程序完全按照代码顺序执行,CPU会等待当前加载存储执行完毕
图片消失了

网站公告

今日签到

点亮在社区的每一天
去签到