kotlin-安卓开发笔记
基本语法函数定义函数定义使用关键字fun,参数格式为:参数 : 类型
123fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}
表达式作为函数体,返回类型自动推断:
1234fun sum(a: Int, b: Int) = a + bpublic fun sum(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型
12345678910fun printSum(a: Int, b: Int): Unit { print(a + b)}// 如果是返回 Unit类型,则可以省略(对于public方法也是这样):public fun printSum(a: Int, b: Int) { print(a + b)}
可变长参数函数的变长参数可以用 vararg 关键字进行标识:
12345678910fun vars(vararg v:Int){ fo ...
web配网思路
流程图
graph TD;
id1(尝试连接上次连接成功的wifi或者尝试连接通过web获取的wifi)-->id2{连接成功?};
id2--N-->id3("`设置AP模式,配置AP名字,密码,子网掩码
开启DNS服务器
初始化WebServer`");
id2--Y-->id4(完成配网);
id3-->id5(通过web获取wifi名字和密码)
id5-->id1
示例代码
git常用命令
Git常用命令的深入解析
在软件开发中,Git作为版本控制工具已经变得不可或缺。它帮助我们管理代码,跟踪更改,并与团队成员协作。虽然Git有很多命令,但以下是一些常用命令及其更多用法的详细介绍。
git clone
用法:git clone [url]
描述:该命令用于从远程仓库复制整个项目到本地。你可以使用此命令快速设置本地开发环境。
git add
用法:git add <file> 或 git add .
描述:此命令将文件或目录添加到暂存区,准备提交。使用.可以将当前目录下的所有更改添加到暂存区。
git commit
用法:git commit -m "Commit message"
描述:此命令将暂存区的更改提交到本地仓库,并附带一条提交信息。
更多选项:
-a:将所有已跟踪的文件的更改添加到暂存区并提交。
--amend:修改上一次的提交。
git diff
用法:git diff 或 git diff --staged
描述:此命令显示工作区与暂存区之间或暂存区与最后一次提交之间的差异。
更多选项:
--stag ...
自制PD诱骗器-FUSB302调试笔记
自制PD诱骗器——FUSB302调试笔记今天,我们开始一个新的项目——自制一个PD(Power Delivery)诱骗器。在这个项目中,我们将探索PD协议的细节,以及如何使用FUSB302和ESP32C3来制作一个PD诱骗器。
一、项目背景USB协会推出了Power Delivery,用以统一充电协议。PD2.0和PD3.0都是USB-C接口的充电协议。其中,PD2.0定义了支持5V3A、9V3A、12V3A、15V3A、20V5A输出,最大充电功率达到100W。而PD3.0在此基础上增加了可编程电源PPS,整合了高压低电流、低压大电流两种充电模式,电压调幅降为20mV一档,仅为当时QC3.0标准的十分之一,调节更为精准。那么既然充电头支持PD协议,那能不能把充电头变成可编程电源呢。这就是我们今天项目的目标——制作一个PD诱骗器来把支持PD协议的充电头变成可编程电源。
二、工作原理PD协议是一种基于数字通信的协议,它使用Type-C接口的双向通信功能,通过协商电压和电流来实现更高效的充电。我们的PD诱骗器将通过FUSB302向充电头申请需要的电压,以实现可编程电源的目的。
三、实施步骤 ...
嵌入式开发笔记-写一个WS2812驱动
嵌入式开发笔记 - 写一个WS2812驱动一、引言在嵌入式开发中,WS2812是一种广泛使用的LED灯珠。它具有内置的驱动芯片,可以方便地控制颜色和亮度,因此在许多应用中都得到了广泛的应用。本文将介绍如何为WS2812编写一个驱动程序,以实现对其颜色和亮度的控制。
二、硬件连接WS2812引脚定义
WS2812典型应用电路
在开始编写驱动程序之前,需要将WS2812连接到开发板上。通常,WS2812使用SPI接口进行通信,因此需要将WS2812的DIN引脚连接到开发板的SPI接口上。此外,还需要将WS2812的VCC和GND引脚连接到开发板的电源和地线。
特别注意WS2812电源电源为3.5v~5.3v,最好不要用单片机的3.3v
三、驱动程序编写WS2812协议级联和编码方法
WS2812协议编码
由于控制WS2812的脉冲高低电平在0.85us,0.4us,时间间隔,为了产生这样的脉冲,使用普通的软件控制IO口是无法完成的,一般使用SPI或者PWM硬件控制,这里采用SPI控制。
当发送波形高电平(T0H)在220ns~380ns且低电平(TOL)在580ns~1us时表 ...
ESP32嵌入网页的三种方法
部分内容 引用自 InfiniteYuan ESP32 开发笔记(十一)使用 ESP32 做为 WebServer
ESP32 嵌入网页的三种方法ESP32 是一款功能强大的微控制器,具有 WiFi 和蓝牙连接功能,因此可以将其用于各种物联网项目。在 ESP32 上嵌入网页可以通过以下三种方法来实现:
一、使用 c 语言字符串存储 html 网页内容可以使用 ESP32 的 WiFi 功能来创建一个 HTTP 服务器,将网页文件放置在 c 语言字符串中,并通过 HTTP 协议向客户端(如智能手机或计算机)提供网页文件。可以使用 Arduino IDE 中提供的 ESP32 Web Server 库来实现此目的。当客户端访问 ESP32 的 IP 地址时,服务器将返回存储器中的网页文件,浏览器将解析并显示网页。优点是简单使用,缺点是没有压缩比较占空间。
示例
12345String ROOT_HTML = "<!DOCTYPE html><html><body><h1>Web Server with ESP32 -Station ...
嵌入式踩坑记录-不太正经的char类型
嵌入式踩坑记录-不太正经的char类型一般在电脑上的char类型为有符号的8位整数,范围-128~128,然鹅在单片机gcc编译器上char是无符号的8位整数,范围0~255。要想得到有符号整数得用signed char,奇奇怪怪的知识又增加了。
不过gcc提供了跨平台的类型头文件<stdint.h>,建议直接使用int8_t,uint8_t等,这样就不容易被坑了。
Makedown 基本语法
总览Markdown 速查表提供了所有 Markdown 语法元素的基本解释。如果你想了解某些语法元素的更多信息,请参阅更详细的基本语法 和 扩展语法。
基本语法这些是 John Gruber 的原始设计文档中列出的元素。所有 Markdown 应用程序都支持这些元素。
元素
Markdown 语法
渲染效果
链接(Link)
[title](https://www.example.com)
title
图片(Image)

粗体(Bold)
**bold text**
bold text
斜体(Italic)
*italicized text*
italicized text
标题(Heading)
# H1## H2### H3
# H1## H2### H3
有序列表(Ordered List)
1. First item2. Second item3. Third item
First itemSecond itemThird item
无序列表(Unordered List)
- First i ...
嵌入式开发笔记-实现一个轻量级的printf
嵌入式开发笔记:实现一个轻量级的printf在嵌入式开发中,有时候我们可能需要一个轻量级的printf函数来调试或者输出信息。虽然标准库中的printf非常强大,但在嵌入式系统中,它可能会过于臃肿,占用过多资源。因此,实现一个轻量级的printf可以是一个很好的解决方案。
一、背景知识首先,我们要明白printf是如何工作的。printf是一个标准库函数,它使用vfprintf函数来将格式化的字符串输出到指定的流中(如文件或终端)。这个过程涉及到很多步骤,包括解析格式字符串、转换数据类型、调用底层I/O操作等。
在嵌入式系统中,我们通常没有完整的标准库支持,因此需要自己实现一个轻量级的printf函数。我们可以使用底层I/O操作(如write或putc函数)直接将字符输出到目标设备。
二、实现步骤1. 定义输出函数首先,我们需要定义一个输出函数,用于将字符直接输出到目标设备。这个函数应该接受一个字符作为参数。
例如,我们可以定义一个简单的输出函数:
123void xputc(char c) { // 在这里实现将字符输出的底层操作}
2 ...