当前位置: 首页 > news >正文

stm32week17+18+19+20

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会等待当前加载存储执行完毕
图片消失了
http://www.lqws.cn/news/515089.html

相关文章:

  • IP-GUARD外设以及网络禁用策略制定
  • ubuntu22.04可以执行sudo命令,但不在sudo组
  • 学习日记-spring-day37-6.25
  • NETCONF 典型工作流程
  • Spark 之 UT
  • 新能源汽车电池类型差异分析
  • 网络安全漏洞扫描是什么?如何识别目标进行扫描?
  • LangGraph--基础学习(Subgraphs 子图)
  • easy-caffeine一个简洁灵活易用基于caffeine的本地缓存框架
  • dovi交叉编译方法(编译libdovi.so)
  • PyTorch 入门之官方文档学习笔记(二)训练分类器
  • 利用Pytorch玩一玩文生图的HDGAN
  • 长尾关键词SEO优化高效策略
  • 微信小程序安卓手机输入框文字飘出输入框
  • 【服务器】服务器选型设计
  • Hadoop之HDFS
  • 【iOS】iOS崩溃总结
  • 一篇文章了解XML
  • 了解笔记本电脑制造:从品牌到代工厂的全产业链
  • Node.js-fs模块
  • linux内核中的链表实现
  • sentinel与seata组件在微服务中的基本作用
  • 微信点餐小程序—美食物
  • ICML 2025 | 低秩Swish网络:理论突破实现高效逼近,小模型性能媲美大网络
  • CSP - J 400分题单总结(洛谷题号)
  • 通过 HTML 子图和多尺度卷积 BERT 的双向融合实现可解释的恶意 URL 检测
  • xtrabackup 的工作原理 为什么不用停服?
  • Jenkins Pipeline 与 Python 脚本之间使用环境变量通信
  • IDEA高效开发指南:JRebel热部署
  • 设计模式精讲 Day 13:责任链模式(Chain of Responsibility Pattern)