【哈哈大一上学的全忘了,重开!!】STM32从零入门物联网开发

本笔记资料来源 :STM32物联网入门30步=单片机物联网入门教程 WIFI连接阿里云物联网+CubeMX+HAL库+蓝牙ESP8266+杜洋主讲_哔哩哔哩_bilibili

IOT:Internet of things

学习目标:

1.掌握洋桃IoT开发板的各功能以及驱动与基本应用

2.掌握wifi模块,蓝牙模块的通信原理和基本应用

3.能够跟随教程中的实践实例,完成物联网小项目开发

peripheral

STM32微控制器系列提供了丰富的外设(Peripheral),这些外设是微控制器中用于与外部世界进行通信和交互的硬件模块。以下是一些常见的STM32外设:
1. 通用同步/异步收发器(USART):用于串行通信,支持异步和同步操作,常用于与外部设备进行数据交换。
2. 串行外设接口(SPI):一种高速的、全双工、同步的通信协议,常用于与闪存、显示器、传感器等外设通信。
3. Inter-Integrated Circuit(I2C):一种慢速的、半双工、同步的通信协议,用于连接低速外设,如EEPROM、RTC、传感器等。
4. 定时器(Timers):包括基本定时器、通用定时器和高精度定时器(HRTIM),用于生成精确的时间延迟、脉冲宽度调制(PWM)信号、编码器接口等。
5. 并行接口(GPIO):通用输入输出端口,用于控制LED、读取按钮状态、与外部设备进行数字通信等。
6. 模数转换器(ADC):用于将模拟信号转换为数字信号,常用于读取传感器数据、电池电压监测等。
7. 数模转换器(DAC):用于将数字信号转换为模拟信号,例如生成模拟音频输出。
8. 实时时钟(RTC):用于提供日期和时间信息,即使在系统复位或电源关闭的情况下也能保持时间信息。
9. 看门狗定时器(Watchdog Timer):用于监控系统的正常运行,并在检测到故障时自动复位系统。
10. 直接内存访问(DMA):用于在不涉及CPU的情况下进行内存之间的数据传输,提高数据处理的效率。
11. 通用串行总线(USB):用于实现与USB主机或设备的通信。
12. 以太网(Ethernet):用于实现网络通信功能。
13. CAN(Controller Area Network):用于实现车辆网络通信。
14. SDIO(Secure Digital Input/Output):用于与SD卡等存储设备通信。
15.MIPI(Mobile Industry Processor Interface):用于连接摄像头和显示屏等。
这些外设的配置和使用通常需要通过STM32的库函数或直接操作寄存器来完成。每个STM32系列和型号的外设列表可能有所不同,因此在使用特定型号的STM32时,应参考该型号的数据手册和参考手册以获取详细的外设信息。
 

RCC时钟与延迟函数

RCC时钟树

STM32的时钟树是一个复杂的系统,它为微控制器的不同部分提供时钟信号。以下是STM32时钟树的详细讲解:


1. 内核与外设时钟:
   - SYSCLK(系统时钟):这是STM32的主时钟,用于为内核、内存和外设提供时钟信号。它可以通过不同的时钟源进行配置,如HSE(外部高速时钟)、HSI(内部高速时钟)或_PLL(锁相环)。
   - HCLK(AHB时钟):这是高级高性能总线(AHB)的时钟,用于连接内核和高速外设。HCLK的频率通常为SYSCLK的一半或与其相同。
   - FCLK(APB时钟):这是高级外设总线(APB)的时钟,用于连接低速外设。FCLK的频率通常为HCLK的一半或与其相同。
   - ADC功能时钟:这是为模数转换器(ADC)提供时钟信号的时钟。它的频率通常较低,以降低功耗和噪声。
2. 独立时钟:
   - PTC时钟:这是为实时时钟(RTC)提供时钟信号的时钟。它通常由低功耗的32.768kHz振荡器提供。
   - 独立看门狗时钟:这是为独立看门狗定时器提供时钟信号的时钟。它通常由低功耗的32.768kHz振荡器提供。
   - Flash编程时钟:这是为Flash编程操作提供时钟信号的时钟。它的频率通常较低,以确保Flash操作的可靠性。
   - USB接口时钟:这是为USB接口提供时钟信号的时钟。它通常由_PLL时钟提供,并且需要精确的时钟频率以满足USB规范的要求。
   - MCO时钟输出:这是微控制器的时钟输出,可以将时钟信号输出到外部设备。它可以通过编程选择不同的时钟源进行输出。
3. 时钟输出:
   - 时钟输出功能允许将STM32内部的时钟信号输出到外部设备。这可以通过MCO(微控制器时钟输出)引脚实现。MCO引脚可以输出不同的时钟信号,如HSI、HSE、PLL时钟等。这为外部芯片或者单片机与单片机间提供了一种简单的方式来获取与STM32同步的时钟信号。


STM32的时钟树还包括其他时钟信号,如为I2S接口、SPI接口、UART接口等提供时钟的时钟信号。这些时钟信号可以通过时钟控制寄存器进行配置和调整,以满足不同应用的需求。
 

时钟树从左到右三个部分:时钟源,选择器&倍频器&分频器(调节频率),最终设定的频率(单片机的数据总线和各功能的频率最后会显示在这里)

RCC程序代码

我们在图形界面里设置了时钟树选项,之后会转化成程序代码,存放在工程文件中。

启动文件中的代码:以下了解即可

cubemx中生成的代码:教你修改代码

因为单片机的运行速度太快:微秒级别——我们需要:hal中的延迟函数

最小1ms最大49.7天

串口通信与超级终端

串口通信对物联网开发特别重要,在开发过程中我们需要实时了解单片机的状态信息,需要有一个信息输入输出功能用于调试,最简单的输入输出功能是led和按键,但所能表示的信息太少。串口通讯就是很理想的调试工具。

蓝牙和WiFi的很多模块自带串口功能能够和单片机或者电脑通信:开发蓝牙和WiFi模块就是使用串口的过程。

RTC和BKP(备用寄存器)驱动程序

rtc的两种应用:

闹钟:cube做的很好

时钟,年月日:cube完全没搞

  1. BKP(Backup):BKP通常指的是备份寄存器(Backup Register)。这些寄存器位于备份域中,当微控制器进入低功耗模式或复位时,备份寄存器的内容会被保留。这意味着即使系统电源被完全切断,备份寄存器中的数据也不会丢失。BKP寄存器通常用于存储关键数据,如系统配置、重要参数等,以确保在电源恢复后能够快速恢复系统状态。

  2. RTC(Real-Time Clock):RTC是指实时时钟模块。RTC是一个独立的定时器,可以在微控制器的主电源关闭时继续运行,通常由备用电池供电。RTC用于提供日期和时间信息,即使系统复位或电源关闭,也能保持时间的连续性。RTC模块通常包括时钟日历功能、闹钟功能和有时还包括计时器功能,用于各种需要准确时间记录的应用,如时间戳、定时唤醒等

USB从设备串口驱动程序

我们想和电脑一起玩呢~比如鼠标键盘啥的是不是都用的usb接口插进电脑。Soga,当我们想把单片机也看作鼠标,键盘之类的链接电脑时……usb,虚拟串口它们来啦。

USB to TTL转换器是一种硬件设备,它允许用户将USB接口转换为TTL电平的串行通信接口。这种转换器通常用于编程和调试微控制器、嵌入式系统、无线模块、传感器以及其他需要串行通信的电子设备。
USB to TTL转换器的主要功能包括:
1. 电平转换:USB接口使用的是USB标准电平(通常是3.3V或5V),而TTL电平通常是5V。转换器在USB和TTL设备之间进行电平转换,确保两者能够正常通信。
2. 数据传输:转换器允许通过USB接口发送和接收串行数据,这对于编程、调试和监测串行通信设备非常有用。
3. 串行通信:转换器通常支持常见的串行通信协议,如RS-232、RS-485、RS-422等,以及常见的串行通信速度,如9600、19200、115200波特等。
4. 插即用:USB to TTL转换器通常不需要安装额外的驱动程序,可以即插即用,方便用户快速连接和开始通信。
5. 跨平台兼容性:由于USB接口的普遍性,USB to TTL转换器可以在多种操作系统上使用,包括Windows、macOS、Linux等。
USB to TTL转换器通常包含以下部分:
- USB接口:用于连接到计算机或其他USB主机设备。
- TTL串行接口:包括TX(发送)、RX(接收)、GND(地)等引脚,用于连接到目标设备的串行端口。
- 电平转换电路:将USB电平转换为TTL电平,并确保信号的兼容性。
- 配置跳线或开关:用于选择串行通信的参数,如波特率、数据位、停止位、校验位等。
USB to TTL转换器在电子爱好者和工程师中非常流行,因为它们提供了一种简单、低成本的方式来与串行设备进行通信和编程。

stm103内部usb和电脑连接,电脑为主设备,stm32 为slave

第15集)USB从设备串口驱动程序!_哔哩哔哩_bilibili

以上的设置只是正对usb接口硬件层面上的操作。如果想让usb接口虚拟出串口功能还需要usb驱动程序的加持,这里的驱动程序可由cub自动生成

在STM32微控制器中,DFU、虚拟串口和HID是三种不同的USB功能,它们分别代表:


1. DFU(Device Firmware Upgrade):DFU是一种USB协议,允许通过USB接口对设备的固件进行更新。在STM32中,DFU模式允许用户通过USB连接将新的固件刷写到微控制器的闪存中。这是一种非常方便的固件升级方式,因为它不需要额外的编程器或调试器。
2. 虚拟串口(Virtual COM Port):虚拟串口是STM32通过USB模拟出的一个串行通信端口。当STM32以虚拟串口模式连接到计算机时,计算机将其识别为一个串行端口(例如COM端口),可以通过串行通信软件进行数据传输。这种模式常用于调试、数据日志记录或与其他串行设备通信。
3. HID(Human Interface Device):HID是USB规范中定义的一种设备类别,用于人机交互设备,如键盘、鼠标、游戏控制器等。在STM32中,HID模式允许微控制器通过USB接口作为人机交互设备与计算机通信。这使得STM32可以轻松地实现自定义的用户输入设备或游戏控制器。
STM32微控制器支持多种USB类,包括DFU、虚拟串口和HID,这些类可以在STM32的USB库中找到相应的实现。开发者可以根据具体的应用需求选择合适的USB类,并通过STM32的USB外设来实现相应的功能。

省电模式,CRC与芯片ID

STM32微控制器提供了多种省电模式,以及一些用于确保数据完整性和安全性的功能,如CRC(循环冗余校验)和芯片ID。以下是这些功能的详细说明:
省电模式:
STM32微控制器具有多种低功耗模式,旨在减少功耗并延长电池寿命。这些模式包括:
1. 睡眠模式(Sleep Mode):在睡眠模式下,CPU停止运行,但所有的外设仍然处于工作状态,并可以通过中断唤醒CPU。
2. 停止模式(Stop Mode):在停止模式下,所有的时钟都被关闭,CPU和外设停止运行,但内部的RAM和寄存器的内容得以保持。可以通过任意外设的中断或唤醒线(WKUP)来唤醒微控制器。
3. 待机模式(Standby Mode):待机模式是功耗最低的模式,除了备用域(RTC、备份寄存器和备份SRAM)之外,所有的电源都被切断。微控制器可以通过复位信号或特定的唤醒事件(如RTC闹钟事件)唤醒。
4. 低功耗运行模式(Low Power Run Mode):在这种模式下,CPU以降低的频率运行,从而降低功耗,同时保持微控制器的运行状态。
CRC(循环冗余校验):
CRC是一种数据校验技术,用于检测数据在传输或存储过程中是否发生错误。STM32微控制器内置了CRC计算单元,可以用于计算一组数据的CRC值,并与预先定义的值进行比较,以确保数据的完整性。
芯片ID:
STM32微控制器有一个唯一的芯片ID,通常是一个96位或128位的数字,用于标识每个芯片的唯一性。这个ID可以用于安全目的,如设备认证、加密密钥生成等。芯片ID通常无法被修改,确保了其作为唯一标识符的可靠性。
这些功能使得STM32微控制器非常适合于需要低功耗和高数据安全性的应用,如嵌入式系统、物联网设备、便携式医疗设备等。


蓝牙模块驱动程序

虽然呢在无线通信领域WiFi具有更高的性能和更强大的扩展性,但是蓝牙技术以其低成本低功耗依然在移动设备的近场无线通信中占据一席之地。

1.往底层去可以讲蓝牙protocol

2.展开应用层技术可以讲解蓝牙与手机的高级连接,比如用app控制设备,在微信小程序上显示设备参数,在两台设备之间传送图片和音乐

可以把蓝牙模块当作单片机来连接温湿度传感器,继电器等外围电路

AT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/762805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++11:右值引用,列表初始化】

统一列表初始化: 构造函数的函数名与函数体之间增加一个列表,用于对成员初始化 在实例化对象时,支持单/多参数的隐式转化,同时也可以省略符号,让代码更简洁 右值的引用 左值: 左值与右值的重要区别就是能…

tkinter显示图片

tkinter显示图片 效果代码解析打开和显示图像 代码 效果 代码解析 打开和显示图像 def open_image():file_path filedialog.askopenfilename(title"选择图片", filetypes(("PNG文件", "*.png"), ("JPEG文件", "*.jpg;*.jpeg&q…

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点,最终找到核心的处理是refresh方法,从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富,主要分为以下几种类型,每种类型都有其特定的用途和特性。 一、整型数值 1.定义:整数类型用于表示整数值,如1、-5、100等。 2.特点: Python 3中的…

面试题-Spring家族与SpringIOC

1.spring家族的介绍 Spring简单图: 2.IOC原理 IOC就是原先代码里需要开发者实现对象的创建和关系依赖,反转交给SpringIOC容器管理对象的生命周期和对象之间的依赖关系。 依赖注入的方式: Setter:实现特定属性的public sette…

RedHat9 | podman容器-续集

一、管理容器存储和网络资源 使用容器来运行简单的进程,然后退出。可以配置容连续运行特定服务,如数据库服务。如果持续运行服务,需要向容器添加更多的资源,如持久存储或对其他网络的访问权限。 针对企业容器平台上的大型部署&a…

数据资产安全策略的定制化之道:深入了解各企业独特需求,量身打造个性化的数据资产保护方案,确保数据安全无虞,助力企业稳健发展

目录 一、引言 二、企业数据资产安全现状分析 (一)数据安全风险多样化 (二)传统安全措施难以满足需求 (三)企业数据资产安全意识亟待提高 三、定制化数据资产安全策略的重要性 (一&#…

SuperMap GIS基础产品FAQ集锦(20240701)

一、SuperMap iDesktopX 问题1:对于数据提供方提供的osgb格式的数据,如何只让他生成一个s3mb文件呢?我用倾斜入库的方式会生成好多个s3mb缓存文件 11.1.1 【解决办法】不能控制入库后只生成一个s3mb文件;可以在倾斜入库的时候设…

永磁同步电机离线参数识别

引言 永磁同步电机(PMSM)因其结构简单、功率密度高、转矩惯量比大和效率高等优点,在工业生产、航空航天和新能源交通等领域得到了广泛应用。然而,传统的参数辨识方法依赖位置传感器,这不仅增加了硬件成本,…

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化,作为现代农业发展的重要基石,是指在建设高产、稳产、节水、环保的农田基础上,深度融合现代信息技术,实现农田管理的精准化、智能化和高效化。物联网(Intern…

sql server启动、连接 与 navicat连接sql server

一、sql server 启动 1.搜索cmd->以管理员身份运行 2.输入以下命令 net start mssqlserver 3.服务器启动成功 二、sql server连接 1.打开ssms,输入,连接 2.右键,属性 3.连接,勾选允许远程连接到此服务器 三、navicat连接sq…

20人团队如何免费使用 Atlassian 云产品?

企业赚钱越来越难,尤其是初创团队或小型团队更倾向于使用免费工具支持业务。团队规模影响协作复杂度,Atlassian 考虑到小团队的需求,提供了多种选择。比如,Jira 和 Confluence 的云版本有免费版,包含基本的项目管理功能…

三坐标测量机:柔性生产制造中的高精度测量解决方案

柔性生产制造是制造业的核心竞争力之一。它强调生产线的灵活性和适应性,以满足市场对产品多样化和个性化的需求。在当今快速变化的工业环境中,随着消费者对产品个性化和定制化需求的增加,柔性生产制造和三坐标测量机的结合,为智能…

MSVCR120.DLL丢失的多种修复方法,助你快速解决dll问题

在日常生活和工作中,电脑已经成为我们不可或缺的工具。然而,在使用电脑的过程中,我们常常会遇到一些问题,其中之一就是电脑运行软件时提示找不到msvcr120.dll。如果该文件缺失或损坏,可能会导致依赖它的应用程序无法启…

大聪明教你学Java | 深入浅出聊 RocketMQ

前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…

一、课程介绍,基础—环境安装、判断、循环语句等(爬虫及数据可视化)

一、课程介绍,基础—环境安装、判断、循环语句等(爬虫及数据可视化) 1. 课程介绍1.1 相关内容1.2 学习目标1.3 学习内容安排 2. python2.1 环境配置2.2 标识符和关键字2.3 运算符2.4 判断语句2.5 循环语句 1. 课程介绍 1.1 相关内容 10天的…

Node.js安装及配置

文章目录 1.安装Node.js2.创建目录3.配置环境变量4.配置全局安装路径和缓存路径(可选)配置Webstorm 1.安装Node.js https://registry.npmmirror.com/binary.html?pathnode 推荐安装18.x版本 2.创建目录 下载解压后进入目录,创建node_global和node_cache两个空文…

AI播客下载:Practical AI(人工智能最新进展)

Practical AI这是由 http://Changelog.com推出的节目。Changelog 本身做了许多跟软件开发的 podcast 节目 。比如《The Changelog》播客 ,这是一个专注于软件领域的播客,每周一发布最新新闻摘要,周三进行深入技术访谈,周五则是访谈…

Vue-element 组件dialog右上角点击 X 清空表单校验信息

问题: 点击确定触发校验后,点击弹窗右上角的 X号关闭弹窗后再次打开弹窗,校验规则没有被清空 解决方法:

Linux——数据流和重定向,制作镜像

1. 数据流 标准输入( standard input ,简称 stdin ):默认情况下,标准输入指从键盘获取的输入 标准输出( standard output ,简称 stdout ):默认情况下,命令…