基于ARM内核的智能手环(day1)


整体介绍

智能手环由 ARM 内核 MCU(Cortex-M 系列)、TFTLCD 屏、温湿度传感器、心率传感器、

加速度传感器等主要几部分构成。该平台硬件采用 STM32 芯片,通过对温湿度传感器的驱动编写,获取周围温湿度数据,并在 LCD 屏显示,通过对心率传感器对人体心率的采集,获取实时心率值,并在 LCD 屏绘制心率曲线图以及心率值,通过对加速度传感器对人体运动数据进行采集,结合计步算法,计算出人所走的步数,并在 LCD 屏显示,同时可以通过 RTC 记录当前时间,并在 LCD 屏显示时间以及电子数字时钟。

背景

项目名称:智能手环

项目背景: 智能手环诞生之初是为了能够记录人们的运动情况,监测用户的健康状况,以期培养健康而科学的运动和生活习惯。随着产品的优化和升级,智能手环的监测功能逐步延伸到能够对用户的活动、锻炼、心率监控等进行持续性地监测和反馈。

image-20240325214928343

项目架构

智能手环由 ARM 内核 MCU(Cortex-M 系列)、TFTLCD 屏、温湿度传感器、心率传感器、

加速度传感器等主要几部分构成。该平台硬件采用 STM32 芯片,通过对温湿度传感器的驱动编写,获取周围温湿度数据,并在 LCD 屏显示,通过对心率传感器对人体心率的采集,获取实时心率值,并在 LCD 屏绘制心率曲线图以及心率值,通过对加速度传感器对人体运动数据进行采集,结合计步算法,计算出人所走的步数,并在 LCD 屏显示,同时可以通过 RTC 记录当前时间,并在 LCD 屏显示时间以及电子数字时钟。

需要实现的功能

GPIO口点灯、按键检测、非阻塞轮询、串口通信、LCD、温湿度传感器、ADC、RTC、心率传感器、加速度传感器

产品开发流程

  1. 项目是怎么来的?

    • 竞品调研

    • 市场调研

  2. 产品的立项(项目经理/老板)

  3. 项目的研发

    硬件研发:原理板的绘制、PCB板、焊接

    软件研发:配合硬件工程师实现对应的功能

  4. 产品的测试

    硬件测试:产品使用次数上限、零部件的损耗速率

    软件测试:修改BUG

  5. 产品的售后服务

    产品的升级和BUG的修复

嵌入式

什么是嵌入式?

嵌入式系统,从客户需求出发,灵活裁剪软硬件的现代计算机技术

嵌入式应用领域

image-20240325215037202

image-20240325094352905

MCU

微型控制单元

单片机

微型计算机

image-20240325215046965

单片机的厂商

ST意法半导体 NXP恩智浦 德州仪器

兆易创新GD32 乐鑫科技ESP32

STM32

内存更大,接口更丰富,市场占有量大

ST 意法半导体

M ARM公司 M3

32位

STM32内部结构

查手册

image-20240325215101114

环境搭建

编写代码:用C语言写代码

编译代码:编译成可执行代码

image-20240325110137822

见pdf

项目源码

image-20240325145709519

lib 库

project 自动创建

startup 项目启动文件

user 用户—main.c,main.h

api 接口文件

芯片类型

STM32F103ZET6

项目开发的三种方式

  1. 寄存器:位操作
  2. 标准库、固件库:技术成熟(已经不再更新)
  3. HAL库:图形化开发

LED灯与GPIO口

led灯能干啥?

状态指示灯

看原理图,找到对应的引脚

image-20240325160714163

绿色LED1叫网络标号

网络标号:相同的网络标号是练习在一起的

image-20240325161218173

GPIO口命名规则:

通用输入输出的规则

P:port(端口)

E:A B C…端口号

2:0~15 (16)端口位

GPIO口的模式:

image-20240325161732220

image-20240325161900451

IO口在最右边

VDD是内部电源:3.3V

锯齿状:电阻

开关闭合,内部接电源,上拉

机器只能识别0和1

电压值:模拟量

数字量:0 1

所以我们规定

0:0V

1:2.5-5V

VSS:内部地

开关闭合为下拉

如果没有上拉和下拉,就是浮空数

image-20240325163056792

两个输出源

如果从输出数据寄存器输出,叫通用输出

片上外设:复用输出

推挽可以输出输出

开漏只能输出0

  • 输入模式:

    1. 上拉输入:默认输入高电平

    2. 下拉输入:默认输入低电平

    3. 浮空输入:没有上下拉

    4. 模拟输入:ADC

  • 输出模式:

    1. 推挽输出:0 1
    2. 开漏输出:不能通过自身输出高电平信号
    3. 复用推挽
    4. 复用开漏

所以我们控制led灯所用的是输出模式中的推挽输出

PE2 输出 0 灯开

输出1 灯关

找到对应的IO口

LED1 —— PE2

LED2 —— PE3

3.配置IO口模式

PE2 推挽输出

写代码

image-20240325165241423

#include "main.h"  

int main(void)
{
	//LED1 PE2 推挽输出
	//配置IO口步骤
	//step1.开时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
	
	//step2.配置IO口模式
	GPIO_InitTypeDef	GPIO_InitSTRUCT;
	GPIO_InitSTRUCT.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitSTRUCT.GPIO_Pin = GPIO_Pin_2;
	GPIO_InitSTRUCT.GPIO_Speed = GPIO_Speed_50MHz;
	
	//step3.初始化IO口
	GPIO_Init(GPIOE,&GPIO_InitSTRUCT);
	
	//PE2输出低电平
	GPIO_WriteBit(GPIOE,GPIO_Pin_2,Bit_RESET);
	while(1)
	{
		
	}
}

然后输出高低电平即可控制灯的亮灭

GPIO_WriteBit(GPIOE,GPIO_Pin_2,Bit_SET);

那么每次都这样写是不是有点点麻烦

所以我们宏定义一下

#define LED1_ON GPIO_WriteBit(GPIOE,GPIO_Pin_2,Bit_RESET)
#define LED1_OFF GPIO_WriteBit(GPIOE,GPIO_Pin_2,Bit_SET)

这样我们就可以轻松的控制小灯的亮灭了


下一篇笔记我们则会学习如何通过寄存器反转电平状态

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

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

相关文章

设计模式12--组合模式

定义 案例一 案例二 优缺点

docker配置github仓库ghcr国内镜像加速

文章目录 说明ghcr.io简介配置镜像命令地址命令行方式1panel面板方式方式一:配置镜像加速,命令行拉取方式二:配置镜像仓库,可视化拉取 说明 由于使用的容器需要从github下载镜像,服务器在国外下载速度很慢&#xff0c…

MySQL InnoDB 之 多版本并发控制(MVCC)

多版本并发控制(MVCC,Multi-Version Concurrency Control)是数据库管理系统中用于提供高并发性和在事务处理中实现隔离级别的一种技术。MVCC 允许系统在不完全锁定数据库资源的情况下,处理多个并发事务,从而提高了数据…

计算机网络实验五:特定主机路由和默认路由

实验五:特定主机路由和默认路由 5.1 实验目的 (1)学习默认路由的概念和作用 (2)学习特定路由的概念和作用 (3)了解网络中路由选择的基本原理和应用 5.2 实验步骤 5.2.1 构建网络拓扑 在栏…

LeetCode - 字母板上的路径

1138. 字母板上的路径 刚看到这道题的时候,我居然想用搜索去做这道题,其实有更优解,用 / %算会更加的快,只需要遍历一次即可.假如说我们要找n,n是第13个字母,那他就位于 13 / 5 2, 13 % 5 3.他就位于三行三列(a为0,0),知道了原理,代码就好写了. class Solution { public:st…

基于51单片机HC05蓝牙环境检测系统

目录 1、概要 2、HC05配对传送数据教程 2.1 进入AT模式 2.2串口软件配置 2.3 异常分析 3、代码编写 4、原理图 5、仿真图 6、实物运行视频 7、小结 资料下载地址:基于51单片机手自动浇花系统 1、概要 本文详细介绍HC05蓝牙模块与51单片机的连接配对过程&#xff0c…

【WEEK5】 【DAY5】DML语言【中文版】

2024.3.29 Friday 目录 3.DML语言3.1.外键(了解)3.1.1.概念3.1.2.作用3.1.3.添加(书写)外键的几种方法3.1.3.1.创建表时直接在主动引用的表里写(被引用的表的被引用的部分)3.1.3.2.先创建表后修改表以添加…

二十四种设计模式与六大设计原则(三):【装饰模式、迭代器模式、组合模式、观察者模式、责任链模式、访问者模式】的定义、举例说明、核心思想、适用场景和优缺点

接上次博客:二十四种设计模式与六大设计原则(二):【门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式】的定义、举例说明、核心思想、适用场景和优缺点-CSDN博客 目录 装饰模式【Decorator Pattern】 定义…

设计模式(9):外观模式

一.迪米特法则(最少知识原则) 一个软件实体应当尽可能少的与其他实体发生相互作用。 二.外观模式 为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用。它的核心是什么呢,就是为我们的子系统提供一个统一的入口,封装子…

IDE/VS2015和VS2017帮助文档MSDN安装和使用

文章目录 概述VS2015MSDN离线安装离线MSDN的下载离线MSDN安装 MSDN使用方法从VS内F1启动直接启动帮助程序跳转到了Qt的帮助网页 VS2017在线安装MSDN有些函数在本地MSDN没有帮助?切换中英文在线帮助文档 概述 本文主要介绍了VS集成开发环境中,帮助文档MS…

探索一致性哈希算法以及在 Dubbo 负载均衡中的应用

文章目录 负载均衡简介基于哈希算法的负载均衡策略传统哈希算法一致性哈希算法虚拟一致性哈希算法 一致性哈希在 Dubbo 中的应用ConsistentHashSelector 构造方法ConsistentHashSelector select方法 负载均衡简介 负载均衡(Load Balance,简称 LB&#x…

国产AI大模型推荐(一)

文心一言 主要功能: 各种类型的问答、各种文本创作、推理与数学计算、写代码、聊天交流、图片生成等。 链接:文心一言 讯飞星火 特点: 内容生成能力:我可以进行多风格多任务长文本生成,例如邮件、文案、公文、作文、对…

汇总:五个开源的Three.js项目

Three.js 是一个基于 WebGL 的 JavaScript 库,它提供了一套易于使用的 API 用来在浏览器中创建和显示 3D 图形。通过抽象和简化 WebGL 的复杂性,Three.js 使开发者无需深入了解 WebGL 的详细技术就能够轻松构建和渲染3D场景、模型、动画、粒子系统等。 T…

使用Node.js常用命令提高开发效率

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,广泛用于构建服务器端应用程序和命令行工具。Node.js提供了丰富的命令和工具,可以帮助开发者更高效地开发应用程序。在日常开发中,除了Node.js本身的核心功能外,npm&#x…

蓝桥杯习题

https://www.lanqiao.cn/problems/1265/learning/ 第一题---排序 给定一个长度为N的数组A,请你先从小到大输出它的每个元素,再从大到小输出他的每个元素。 输入描述: 第一行包含一个整数N 第二行包含N个整数a1,a2,a3,...an,表…

牛客周赛 Round 38(A,B,C,D,E,F,G)

比赛链接 官方讲解(不分P不分段直接两小时怼上来是坏文明 ) 这场的题很棒,思维有难度,考察的知识点广泛,有深度,很透彻。感觉学到了很多。建议补题。 A 小红的正整数自增 思路: 签到。 可以…

k8s的pod访问service的方式

背景 在k8s中容器访问某个service服务时有两种方式,一种是把每个要访问的service的ip注入到客户端pod的环境变量中,另一种是客户端pod先通过DNS服务器查找对应service的ip地址,然后在通过这个service ip地址访问对应的service服务 pod客户端…

Python面对对象 - 类的反射机制

Python面对对象类的反射机制是面向对象编程语言中比较重要的功能,可以动态获取对象信息以及动态调用对象。通过字符串形式的类名或属性来访问对应类或属性。 一、对象的反射 1. getattr 获取指定字符串名称的对象属性、方法: 当访问的属性不存在时&#…

AtCoder Beginner Contest 347(A~D)

A - Divisible 如果序列里面的数能被k整除&#xff0c;就整除后输出 #include <bits/stdc.h> //#define int long long #define per(i,j,k) for(int (i)(j);(i)<(k);(i)) #define rep(i,j,k) for(int (i)(j);(i)>(k);--(i)) #define debug(a) cout<<#a<…

Android ImageView 的scaleType 属性图解

目录 前言测试素材测试布局xmlscaleType前言 一、ScaleType.FIT_CENTER 默认二、ScaleType.FIT_START三、ScaleType.FIT_END四、ScaleType.FIT_XY五、ScaleType.CENTER六、ScaleType.CENTER_CROP七、ScaleType.CENTER_INSIDE八、ScaleType.MATRIX 前言 原文链接&#xff1a; A…