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.pswp.cn/diannao/88407.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88407.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88407.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14.Linux Docker

## Linux系统优化一般情况,我们都会使用Linux来进行MySQL的安装和部署,Linux系统在使用的时候,也需要进行相关的配置,以提高MySQL的使用性能,这里列举以下几点:避免使用Swap交换分区,因为交换时…

智能体平台的商业前景与竞争格局分析:金融与企业市场的机遇与挑战

一、金融机构与企业部署第三方智能体平台,这条路靠谱吗? 1. 需求背景 金融机构和大中小企业普遍面临数字化转型、降本增效、智能服务升级等需求。智能体(Agent/AI Agent)平台能帮助企业快速构建客服、风控、营销、数据分析等多种…

数据结构篇-二分图

定义示例应用 定义 一个图是二分图;一个图具有二着色性;一个图不包含任何奇数长度的环; 实现 /*** Program 18.6 Two-colorability* ------------------------------------------------------------------------------------------------…

50. Pow(x, n)快速幂算法

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。此函数应将 x 作为浮点数(意味着它可以是十进制数)和 n 作为整数(可以是正数、负数或零)一起使用。 快速幂(Expo…

打造丝滑的Android应用:LiveData完全教程

为什么你需要LiveData? 在Android开发中,数据的动态更新一直是个让人头疼的问题。想象一下:你的界面需要实时显示用户的余额变化,或者一个聊天应用的未读消息数得随时刷新。过去,我们可能会用Handler、手动监听器&…

vue3 el-table 根据字段值 改变整行字体颜色

在 Vue 3 中使用 Element Plus 的 el-table 组件时,如果你想根据某一列的字段值来改变整行的字体颜色,你可以通过使用自定义的 row-class-name 属性或者通过插槽(slot)的方式来达到目的。以下是两种常见的方法: 方法一…

Linux的全新网络管理命令行工具——nmcli

一、nmcli简介 1.1、NetworkManager简介 1.1.1、NetworkManager介绍 在红帽系的Linux中,默认的网络服务是由NetworkManager提供的(其主要是一个可以进行动态网络配置和控制的守护进程)。 使用NetworkManager的优点 序号使用NetworkManager的优…

C++基础之智能指针

一、概念 堆内存对象需要手动使用delete销毁,如果没有使用delete销毁就会造成内存泄漏。 所以C在ISO98标准中引入了智能指针的概念,并在ISO11中趋于完善。 使用智能指针可以让堆内存对象具有栈内存对象的特点,原理是给需要手动回收的内内存对…

python3虚拟机线程切换过程

python实现了自己的多线程,为了保证线程安全,引入了全局解释器锁GIL,只有拿到GIL的线程才能执行,所以在python中同一时刻只能有一个线程在运行,python多线程无法发挥多核处理器的威力,《python源码剖析》中…

PYTHON从入门到实践5-列表操作

# 【1】列表是可变的,可以修改、追加、删除 import randomclass Friend(object):def __init__(self, name, age):self.name nameself.age ageif __name__ __main__:friendList []for i in range(0, 9):randomNumber random.randint(0, 100)friend Friend(f&qu…

【linux】network服务启动网卡流程

目录 1、介绍2、ifup流程【1】与NetworkManager兼容【2】ifup-eth设置ip【3】ifup-routes设置路由 1、介绍 network服务的核心由/etc/sysconfig/network-scripts/下一堆脚本配置来生效,其中启动网卡就是通过ifup脚本来实现的,下面就讲一下ifup如何恢复i…

如何防止自己的电脑被控制?开启二次验证保护教程

远程操作什么最重要?安全,安全,和安全!答案永远是安全!那么究竟如何能让远程连接安全性更上一层台阶呐?又是哪家远控安全策略方面最给力呐?这可不是王婆卖瓜,自卖自夸,确…

微信小程序节点相关总结

微信小程序节点事件总结 bindtap、catchtap、bindclick的区别?bindclick 和 bindtap 的区别在于: e.target和e.currentTargete.typee.timeStamp触摸事件属性(针对触摸类事件)坐标信息事件绑定数据冒泡与捕获相关其他特殊属性**常见…

XSD是什么,与XML关系

XSD(XML Schema Definition)是用于描述XML文档结构和内容的一种规范。它定义了XML文档中元素、属性、数据类型、数据格式以及它们之间的关系和约束。XSD是W3C(万维网联盟)推荐的标准之一,它比早期的DTD(Doc…

Ubuntu服务器中MySQL如何进行主从复制

一、MySQL 主从复制基本原理 MySQL 主从复制是指:一台数据库服务器负责写入操作,并将数据变更以二进制日志形式记录下来;一台或多台从库通过读取主库的二进制日志,实时或半实时地将主库的写入操作同步到自身数据库,实现数据一致性…

Android图形系统框架解析

前言 Android图形系统对于开发者来说可能会比较难以理解,因为涉及的东西可能会计较多,比如Android自己的图形系统。OpenGL,视频编解码器,SurfaceFlinger,FrameBuffer等等。下面我们结合官方文档,介绍一下图…

AI智能巡检系统给烘焙店开的「减损药方」 InfiSight智睿视界

01 食材浪费:甜蜜产业的苦涩成本 后厨操作台上,刚过最佳赏味期的可颂成批倒入垃圾桶——这是烘焙店最隐秘的痛。现烤现售模式虽保障新鲜度,却让原料管理沦为盲区: 销售数据≠生产指南:总部无法感知门店实时库存 …

工具 | vscode 发出声音,如何关闭

设置->搜 accessibility -> Accessibility Support -> 自动 改为 off 设置->搜 volume -> 0 设置->搜 sound -> 辅助功能信号 -> sound的 自动 改为 off 参考: How to turn off (or on) sounds from Visual Studio Code? - Stack Ove…

Hyperf 数据库事务指南(PHP 框架)

Hyperf 数据库事务指南&#xff08;PHP 框架&#xff09; 1. ⚙️ 数据库配置 1.1 配置文件 MySQL 配置位于 config/database.php&#xff0c;通常通过环境变量&#xff08;.env&#xff09;管理敏感信息&#xff1a; <?phpdeclare(strict_types 1); /*** This file i…

动态ds-vnp之normal和shortcut两种方式配置案例

normal方式配置 hub配置 dhcp enable interface GigabitEthernet0/0/0 ip address 3.3.3.3 255.255.255.0 interface GigabitEthernet0/0/1 ip address 192.168.3.254 255.255.255.0 dhcp select interface interface Tunnel0/0/0 ip address 10.1.1.3 255.255.255.0 tunnel…