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

news2024/11/26 0:39:25

回顾

单片机延时方法总结
  1. 空函数延时(delay)
    使用空函数来进行延时操作。简单易用,但延时时间不够精确,且阻塞式。
  2. 定时器延时(delay)
    通过定时器的计数器进行延时操作,提供精确的延时时间,但是仍为阻塞式延时。
  3. 定时器中断延时
    利用定时器中断来实现延时操作,是非阻塞式的延时方法,不会占用CPU资源。
  4. 滴答定时器延时
    利用滴答定时器实现精确的延时,可以根据需求设置不同的分频器和重装载值,是一种高精度的延时方法。
定时器构造要素
  • 计数器(CNT)
    • 向上计数:0-100
    • 向下计数:100-0
    • 向上向下计数:0-100-0
  • 计数频率
    • 跟时钟频率有关,通常以 MHz 为单位
    • 分频器可以设置不同的分频比,影响计数频率
  • 重装载值(ARR)
    • 达到重装载值时,产生溢出中断,可以用来精确控制延时时间
串口通信
  • 类型:串行、并行
  • 工作方式:单工、半双工、全双工
  • 同步方式:同步、异步
  • 波特率:每秒传输的位数,通常以 bps (bit/s) 为单位,如 115200 bps、9600 bps

重定向printf函数

我们通过修改printf函数的子函数来使得函数可以把打印值打印在串口上

//printf重定向
int fputc(int d,FILE *f)
{
    USART1_SendCh(d);
    //只需要多加一步打印字符串到串口即可
	return d;
}

屏幕显示

屏幕种类总结

  1. OLED屏幕
    • 类型:有机自发光屏幕。
    • 特点:色彩细腻、视角广、对比度高。
    • 优点:柔性屏幕,可以实现弯曲、折叠,显示效果好。
    • 缺点:成本相对较高,易烧屏。
  2. LED屏幕
    • 类型:LED点阵组成的显示屏。
    • 特点:常用于广告屏、操场大屏幕等。
    • 优点:亮度高、耐用。
    • 缺点:单色或多色显示,不能实现像OLED那样细腻的色彩。
  3. LCD屏幕
    • 类型:液晶显示屏。
    • 特点:技术成熟,应用广泛。
    • 优点:成本相对较低,显示稳定。
    • 缺点:需要背光板,厚度相对较厚,视角和对比度不如OLED。
    • image-20240331192714772

每种屏幕类型都有其独特的特点和适用场景,选择时需要根据具体需求和预算考虑。

image-20240331192731466

image-20240331192737141

我们需要取模软件来显示汉字或者是图片

汉字取模:

image-20240331192812682

image-20240331192817789

image-20240331192823173

image-20240331192858227

图片取模:

image-20240331192926180

image-20240331192931656

然后再打开图像取模软件,导出.c文件到项目文件夹

然后定义全局变量调用

image-20240331193038098

然后就可以显示图片了


lcd屏幕

这里一直没讲怎么显示在屏幕上,是因为购买屏幕的时候商家会提供相应的函数库

如果自己写的话就太多了

image-20240331193159229

三千多行

那么我们就可以直接去看.h文件里面声明的函数

image-20240331193255944

如果还是不清楚就可以跳转到函数本身去看注释

鼠标停留在函数名上右键点击,然后点击Go To Difinition即可

image-20240331193528590

image-20240331193355756

这样我们就可以很便捷的使用


次回预告:学习如何使用时序来接受传感器的返回值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小白学Java成长日记第二篇

哈喽,小伙伴们,我又回来了,还记得上一篇我们讲了什么内容吗?what!你说已经忘记了?,没事那我们先复习一下吧。 上集回顾: Java的两层皮(主体架构): public …

Python绘制线图之plt.plot()的介绍以及使用

在Python中plt.plot是matplotlib库中的一个函数,用于绘制点和线,并对其样式进行控制,下面这篇文章主要给大家介绍了关于Python绘制线图之plt.plot()的介绍以及使用的相关资料,需要的朋友可以参考下 plt.plot() 是Matplotlib库中用于绘制线图(折线图)的主…

MySQL学习之连接查询

笛卡尔乘积现象 在表的连接查询方面有一种现象被称为:笛卡尔积现象。 笛卡尔积现象: 当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。 select ename,dname from emp,dept; 避免…

力扣刷题Days28-第二题-11.盛水最多的容器(js)

目录 1,题目 2,代码 3,学习与总结 3.1思路回顾 1,如何遍历 2,算法流程 3.2剖析问题 1,题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, h…

ES学习日记(四)-------插件head安装和一些配套插件下载

前言 接上节,第三方插件选择了时间久,功能丰富,长得丑的head,head 插件在ES 5版本以前开箱即用非常简单,ES 5版本以后需要运行在node环境下,所以我们要先准备一下环境 一.安装Git yum -y install git 二.安装node 安装包位置node for linux下载 解压…

省级-能源结构数据(电力消费水平)(2000-2022年)

能源结构指能源总生产量或总消费量中各类一次能源、二次能源的构成及其比例关系。它是能源系统工程研究的重要内容,直接影响着国民经济各部门的最终用能方式,并反映了人民的生活水平。能源结构主要由生产结构和消费结构组成。 本数据通过电力消费水平来…

JAVA学习笔记21(访问修饰符)

1.访问修饰符 ​ *基本介绍 ​ java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围) 1.公开级别:用public修饰,对外公开 2.受保护级别:用protected修饰,对子类和同一个包中的类公开 3.默…

鸿蒙TypeScript入门学习第5天:【TypeScript 运算符】

1、TypeScript 运算符 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。 考虑以下计算: 7 5 12复制以上实例中 7、5 和 12 是操作数。 运算符 用于加值。 运算符 用于赋值。 TypeScript 主要包含以下几种运算: 算…

docker部署实用的运维开发手册

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestdocker-compose部署 vim docker-compose.yml version: 3 services:reference:container_name: referenceimage: registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestports:…

【python从入门到精通】-- 第三战:输入输出 运算符

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

linux命令之tput

1.tput介绍 linux命令tput是可以在终端中进行文本和颜色的控制和格式化,其是一个非常有用的命令 2.tput用法 命令: man tput 3.样例 3.1.清除屏幕 命令: tput clear [rootelasticsearch ~]# tput clear [rootelasticsearch ~]# 3.2.…

HarmonyOS实战开发-一次开发,多端部署-视频应用

介绍 随着智能设备类型的不断丰富,用户可以在不同的设备上享受同样的服务,但由于设备形态不尽相同,开发者往往需要针对具体设备修改或重构代码,以实现功能完整性和界面美观性的统一。OpenHarmony为开发者提供了“一次开发&#x…

vue watch 深度监听

vue2文档&#xff1a;API — Vue.js vue3文档&#xff1a;侦听器 | Vue.js watch 可以用来监听页面中的数据&#xff0c;但如果监听的源是对象或数组&#xff0c;则使用深度监听&#xff0c;强制深度遍历源&#xff0c;以便在深度变更时触发回调。 一&#xff0c;监听 <t…

RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

项目中发现一个奇怪的现象 RecyclerView 加载完数据以后&#xff0c;调用 notifyItemInserted 方法&#xff0c;RecyclerView 会滑动到底部。 简化后的效果图&#xff1a; 因为这个 RecyclerView 的适配器有一个 FootViewHolder&#xff0c;所以怀疑是 FootViewHolder 的问题…

选择排序---算法

1、算法概念 首先在未排序列中找到最小(大)元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小(大)元素&#xff0c;然后放到已排序序列的末尾。以此类推&#xff0c;直到所有元素均排序完毕。 选择排序的思想其实和冒泡排…

LLaMA-Factory参数的解答

打开LLaMA-Factory的web页面会有一堆参数 &#xff0c;但不知道怎么选&#xff0c;选哪个&#xff0c;这个文章详细解读一下&#xff0c;每个参数到底是什么含义这是个人写的参数解读&#xff0c;我并非该领域的人如果那个大佬看到有参数不对请反馈一下&#xff0c;或者有补充的…

【网络安全】常见的网站攻击方式及危害

常见的网站攻击方式多种多样&#xff0c;每一种都有其独特的特点和危害。以下是一些常见的网站攻击方式&#xff1a; 跨站脚本攻击&#xff08;XSS&#xff09;&#xff1a;攻击者通过在目标网站上注入恶意脚本&#xff0c;当用户浏览该网站时&#xff0c;恶意脚本会在用户的浏…

类的函数成员(二):析构函数

一.定义 析构函数(destructor) 与构造函数相反&#xff0c;当对象结束其生命周期&#xff0c;如对象所在的函数已调用完毕时&#xff0c;系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作。 例如&#xff0c;在建立对象时用new开辟了一片内存空间&#xff0c;dele…

单链表就地逆置

算法思想&#xff1a;构建一个带头结点的单链表L&#xff0c;然后访问链表中的每一个数据结点&#xff0c;将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…

Mysql重点思考(上)--mysql的索引优化

mysql的索引优化 expalin关键字的用法explain索引优化示例 type列用法执行查询的顺序类型概述 索引概念索引的定义索引的分类主键&唯一区别 唯一索引的创建和查询创建一个唯一索引查询一个唯一索引 场景题合集唯一索引的场景题主键索引的场景题&#xff08;B树&#xff09;…