四:物联网ARM开发

news/2024/9/23 6:26:22/

软件安装

keil5软件的安装包(软件开发)-> Keil.STM32F0XX_DFP.1.4.0.pack (这是STM32F0设备安装包)-> KEIL_Lic(破解keil的安装包) -> 安装 ST_LINK 烧写工具 -> 安装Java运行环境 -> 选择STM32CubeMX(微控制器图形化配置) -> stm32cube_fw_f0_v180 (库文件)

介绍:ST_LINK

  • ST_LINK 是 STM32 芯片的仿真器,这里介绍烧写工具的安装,通过这个软件操作ST_LINK 将.hex 文件烧写到芯片上。此软件用于为 M0 烧写 bootloader 文件。我们在 keil中编译好的代码可以使用它们本身进行下载

ARM体系结构概述

1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制的,还有调式和编写程序需要打印信息是通过串口进行打印。cpu需要实时监测这个数据需要通过中断这种方式,如果还要跑系统就会有时钟,定时器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一:存储器映射

1.1 访问寄存器

在这里插入图片描述
在这里插入图片描述

1.2 启动模式

在这里插入图片描述
在这里插入图片描述

  • 当BOOT0 是0的时候就是从flas启动,当BOOT0是1BOOT1是0的时候就是从System Memory启动(也叫ISP也介绍串口下载程序),当BOOT0是1 BOOT1是1 的时候 就是从内置的sram启动。我们是用link的方式启动就是从flash方式

在这里插入图片描述

二:GPIO 编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.1 模式寄存器

在这里插入图片描述

2.1.2 输出类型寄存器

在这里插入图片描述
如果设置成了开漏有可能你得不到高电平,如果要得到高电平要接一个上拉电阻,如果是推晚可以正常得到高低电平,开漏状态比较适合电流类型,如果驱动led设置成推晚就可以了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1 寄存器led版本

任何一个外设的工作都需要开启时钟,这个时钟就相当于这个外设工作的脉搏,

  • 这个有一个很大的缺点,每次去控制这些寄存器的时候,都要去查阅参考手册才能确定寄存器每一位的含义还要去操作比较繁琐,更不要说其它外设了

2.2 led 库函数版

在这里插入图片描述
在这里插入图片描述

2.3 按键

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三:uart 串口的应用

串口通信需要连接usb/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
串口的通信速度就是通过波特率进行衡量的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 寄存器介绍 (USART_SR最重要)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2 串口数据的收发

在这里插入图片描述

3.4 串口收发的代码

  • 设置串口的时候可以设置波特率和奇偶校验(有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步)

在这里插入图片描述

  • 这里需要自定义串口的接收然后加载到宏上,由main方法调用
    在这里插入图片描述
    在这里插入图片描述

  • 这一种呢是用库函数
    在这里插入图片描述
    在这里插入图片描述

3.3 串口使用prinf

在这里插入图片描述
在这里插入图片描述

3.5 串口使用prinf的代码

在这里插入图片描述

四:STM中断系统

在这里插入图片描述
在这里插入图片描述

4.1:stm32中断概述

在这里插入图片描述
在这里插入图片描述
中断的应用场景比如说鼠标点击的时候
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 :外部中断控制器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果在SYSCFG_EXTICR0里面选择了x001那么它在EXTI0选择了PB0引脚
在这里插入图片描述
这个输入线可以是gpio的任意一个配置,

4.3 按键中断

在这里插入图片描述
在这里插入图片描述

4.5 按键中断的代码

在这里插入图片描述

  • 这个中断一但发生了就会到我们的入口地址
    在这里插入图片描述

  • 这是一个空方法的回调
    在这里插入图片描述

  • 因为按键中断是控制引脚中断也就是gpio控制所以把回调的方法重写到gpio里面
    在这里插入图片描述

4.4 串口中断

在这里插入图片描述
在这里插入图片描述

串口中断的代码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五:stm32 时钟系统

5.1 stm32 时钟系统概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 SysTick定时器简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 HAL_Delay()分析

在这里插入图片描述
在这里插入图片描述

5.4 STM32通用定时器介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时钟的代码

  • 时钟产生的定时中(中断)需要打印就用到了串口
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

六:模数转化adc

  • 任何一个部件它工作都需要时钟的,时钟它需要分屏

6.1 ADC模数转化概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 看门狗其实就是设定上下值一但超过就中断

6.2 ADC 通道采集代码

  • 采集光照传感器的数据,启动转化,并且采集好数据之后,开启中断
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

6.3 多通道采集代码

  • 按键和光照实现采集数据
    adc最多只能运行14m,pclock最多48m,所以最多4分屏,二分屏已经超过了它的最大值。
    在这里插入图片描述

七:dma

  • 利用ADC采集按键以及光照传感器的数据,在按键中断处理程序中启动DMA传输,
    最后在DMA完成中断中打印采集到的数据

启动
在这里插入图片描述
在这里插入图片描述

  • 通过dma的方式传输adc的方式,因为像真实开发的时候串口都是通过微处理器读到寄存器中,处理信息,然后在读到内存中,会影响效率就有通过dma的方式去处理不需要通过处理器。

八:IIc通信

8.1 I2c通信原理

  • 一根时钟线(同步这个通信的),一根数据线,通信熟率要比串口高很多,一般来说实际上是很少用到主设备的,一般都是cpu作为主设备,传感器其它的作为从设备。单双工说明主从设备是可以相互之间传输数据的,但是在同一时刻只能一个方向。主往从传数据,要么就是从往主传输数据。
    在这里插入图片描述
    在这里插入图片描述
  • 起始信号一般都是由主设备发起的
    在这里插入图片描述
  • 主设备读取从设备的数据,这个数据一般读是在寄存器里面
    在这里插入图片描述

8.2 三轴加速度传感器

在这里插入图片描述

  • 需要陀螺仪是因为这个物体在运动的时候,可以测量它的运行的姿态,或者加速度去测量它的值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

8.3 I2c配置MPU6050代码实现

利用STM32-I2C总线配置MPU6050,并读取三轴加速度的原始数据
在这里插入图片描述
在这里插入图片描述

  • mpu6050是要配置里面的寄存器,每个寄存器它都是有地址的,封装到.h文件,放到Inc文件里面(INC文件一般都是存放头文件的),我们需要写一个mpu6050的函数,我们就需要创建一个.C文件放到user里面,首先需要把mpu6050的头文件给包含进去

因为是用I2C去配置MPU6050,所以需要去读写MPU6050里面的寄存器。
1: I2c写数据到MPU6050里面

在这里插入图片描述
2:读取陀螺仪的x,y,z的值
在这里插入图片描述
3:放到头文件里面
在这里插入图片描述
4:读取x,y,z的值
在这里插入图片描述

NB-IOT开发

一:初始 NB-IOT

1.1 nb-iot 介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 NB-IOT 硬件平台的介绍及使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 stm32CubMx 安装及使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二:使用NB-IOT模块

2.1 使用 NB-IOT基础模块建立

2.2 at 指令集开发原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三:NB-IOT连接网络

3.1 建立起自己的服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 at 指令TCP 通信

在这里插入图片描述

四:实现代码驱动NB-IOT


http://www.ppmy.cn/news/1452424.html

相关文章

Windows 系统中常用的命令提示符(CMD)命令

一、文件和目录操作: dir:列出当前目录中的文件和子目录。 cd 目录路径:更改当前目录。 mkdir 目录名:创建新目录。 del 文件名:删除文件。 rmdir 目录名:删除目录。 Mstsc 打开远程连接命令 二、系统信…

Tomcat启动闪退怎么解决(文末附终极解决方案)

AI是这么告诉我的 Tomcat启动时出现闪退问题可能由多种原因引起,以下是解决此类问题的一些通用方法: 检查环境变量: 确保已经正确设置了JAVA_HOME和JRE_HOME环境变量,并指向正确的Java安装路径。将Java的bin目录添加到系统的PATH…

【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页,使用的是PageHelper分页插件,版本使用的是5.1.8 。 ​ 参考文档…

痉挛性斜颈患者改掉这些不良习惯,康复就不远了!

痉挛性斜颈,一种不容忽视的神经系统疾病,正在影响着全球数百万人的生活。它不仅仅是一种身体上的病痛,更是一种精神上的折磨。对于患者而言,除了寻求专业的医学治疗外,日常生活中的一些不良习惯也可能成为他们康复道路…

python在Django中,模板加载器(Template Loaders)是负责查找和加载模板文件的组件

在Django中,模板加载器(Template Loaders)是负责查找和加载模板文件的组件。Django默认使用django.template.loaders.filesystem.Loader和django.template.loaders.app_directories.Loader这两个加载器,它们分别用于从文件系统和Django应用目录下的templates子目录中加载模…

01-MySQL 基础篇笔记

一、MySQL 概述 1.1 数据库相关概念 数据库:(DB:DataBase) 存储数据的仓库,数据是有组织的进行存储 数据库管理系统:(DBMS:DataBase Management System) 操作和管理数…

C++ | Leetcode C++题解之第61题旋转链表

题目: 题解: class Solution { public:ListNode* rotateRight(ListNode* head, int k) {if (k 0 || head nullptr || head->next nullptr) {return head;}int n 1;ListNode* iter head;while (iter->next ! nullptr) {iter iter->next;n…

机器学习笔记-22

终章 至此吴恩达老师的机器学习课程已经完成啦,总结一下: 1.监督学习的算法:线性回归、逻辑回归、神经网络和向量机 2.无监督学习的算法:K-Means、PCA、异常检测 3.推荐系统、大规模数据处理、正则化、如何评估算法 4.上限分析、…