- 博客(1185)
- 资源 (11)
- 收藏
- 关注
原创 51单片机学习笔记11 使用DS18B20温度传感器
DS18B20是一种具有高精度、数字输出和单总线通信数字温度传感器,可以提供9位温度读数。1-Wire协议是一种串行通信协议,用于在单一数据线上进行通信和供电。它由独特的通信方式和协议约定组成,广泛应用于各种数字设备和传感器之间的通信。
2024-03-28 09:56:24 371
原创 51单片机学习笔记10 IIC通讯和EEPROM
IIC(也被称为I²C,是一种串行通信协议。它由Philips Semiconductor(现在的NXP Semiconductors)在1980年代初期开发,用于在集成电路(IC)之间进行低速、短距离的通信。I²C协议广泛应用于嵌入式系统中,尤其是在微控制器与各种外围设备之间的通信,如传感器、EEPROM、RTC(实时时钟)等。
2024-03-22 14:30:00 1080
原创 51单片机学习9 串口通讯
51单片机的串口通信是通过内置的串行通信口(UART)实现的,常用于与外部设备进行数据交换。串口通信是一种基于串行传输的数据通信方式,通过一根数据线和一根时钟线(或不需要时钟线)进行数据传输。数据按照一定的规则和时序被发送和接收。TXD:接P3.1引脚RXD:接P3.0引脚SBUF 是缓冲区,分为发送缓冲区和接收缓冲区。TH1和TL1是定时器1的功能,需要工作在方式2(自动重载模式),用来设置波特率;
2024-03-21 19:17:29 776
原创 51单片机学习笔记8 中断系统及定时器
TMOD 寄存器各位的功能分成2组,高4位、低4位,分别控制定时器1、定时器0的工作模式。位7:GATE1(定时器1门控位):当 GATE1 为 1 时,定时器1的计数/定时工作由外部引脚控制。当 GATE1 为 0 时,定时器1的计数/定时工作受到内部控制。位6:C/T1(定时器1计数/定时选择位):当 C/T1 为 0 时,定时器1为定时器模式;当 C/T1 为 1 时,定时器1为计数器模式。位5-4:M11 和 M10(定时器1工作模式位)
2024-03-20 15:09:16 1136
原创 51单片机学习笔记7 串转并操作方法
由于单片机的I/O资源有限,在进行一些外围设备通讯时,如LED点阵、数码管操作,需要大量的I/O资源,为了减少单片机的资源占用,可以使用串转并的操作,通过引入专用芯片,用较少的单片机I/O引脚,控制大量的外围I/O引脚设备。在串转并操作中,串行数据首先经过一个串行转并行转换器,该转换器将串行数据拆分为多个并行数据。这些并行数据同时传输到并行数据接收器,每个并行数据接收器负责接收并处理其中的一部分数据。最后,这些处理后的并行数据再通过并行数据输出端口一起输出,形成并行数据流。
2024-03-19 14:29:36 934
原创 51单片机学习笔记6 数码管显示
74HC245是一款常用的8位双向电平转换器,也被称为总线驱动器。高速:74HC245具有较高的数据传输速率,适用于高速数字系统。低功耗:它的静态功耗较低,适用于功耗要求较低的应用。低电平输出:74HC245的输出端口可以提供低电平输出,适用于5V和3.3V系统之间的电平转换。D74HC138是一种八线三至八译码器,也被称为3-8译码器。它通常用于数字系统中的地址译码、片选信号生成等应用,用于将三位二进制地址转换为八个输出端口中的一个低电平输出。它具有快速响应、低功耗、高阻抗输入端口等特点。
2024-03-18 14:13:07 1041
原创 STM32 学习12 输入捕获与触摸按键
输入捕获(Input Capture)是一种用于测量外部信号脉冲宽度或者频率的技术,常用于测量传感器输出、编码器信号、脉冲调制信号等。输入捕获通常通过定时器模块来实现输入捕获功能。
2024-03-14 09:55:59 860
原创 STM32 学习11 独立看门狗与窗口看门狗
看门狗(WatchDog Timer),是一种电子或软件定时器,采用类似心跳的机制,监测单片机是否处于正常工作状态。在正常工作状态,单片机会定期重置看门狗,当单片机发生异常时,看门狗无法正常重置,计时器会产生超时信号。STM32F10x 内置两个看门狗,分别是独立看门狗(IWDG) 和窗口看门狗 (WWDG)。
2024-03-11 09:40:20 797
原创 STM32 学习10 PWM输出
PWM的全称是脉冲宽度调制(Pulse Width Modulation),是一种控制模拟信号的方法。它通过改变脉冲的宽度来控制模拟信号的平均值。STM32F1除了基本定时器TIM6和TIM7,其它定时器都可以产生PWM输出。TIM1和TIM8:均可同时产生7路PWM输出;其它通用定时器:均可同时产生4路PWM输出。在STM32微控制器中,生成PWM信号通常涉及到自动重装载寄存器(ARR)和比较寄存器(CCR)两个重要的寄存器。
2024-03-08 12:11:45 945
原创 STM32 学习9 中断、外部中断及定时器中断
中断是一种计算机编程中的技术,用于在程序执行期间暂停当前任务,转而执行预定义的中断服务程序(ISR),处理特定的事件或信号。中断机制允许系统对实时事件做出及时响应,而不必用循环去等待特定事件的发生。STM32系列微控制器提供了丰富的中断支持,包括但不限于外部中断、定时器中断、串口中断和DMA中断等。2个 基本定时器(TIM6和TIM7):用于生成简单的定时中断,适用于一些简单的定时任务。4个 通用定时器(TIM2至TIM5):具有更多的功能和配置选项,可以实现更复杂的定时任务和PWM输出等功能。
2024-03-07 15:02:18 1012
原创 STM32 学习8 USART串口通讯与printf重定向
STM32 F103ZET6包含多个UART、USART串口。同步和异步通信全双工通信支持硬件和软件流控制机制异步通信全双工通信无需外部时钟信号。
2024-03-06 12:16:32 1120
原创 STM32学习7 按键扫描
本实验使用普中STM32-F1开发板,芯片型号是STM32F103ZET6。其按键电路如下:对应的芯片引脚:从电路可以看出,键盘的 KEY_UP 键如果接通,会连接高电平。KEY_UP:GPIOA GPIO_Pin0 引脚KEY_LEFT:GPIOE GPIO_Pin2 引脚KEY_RIGHT:GPIOE_GPIO_Pin4 引脚KEY_DOWN:GPIOE_GPIO_Pin3 引脚// 引脚和端口// 读取引脚状态。
2024-03-03 12:49:08 910
原创 STM32学习6 SysTick系统定时器
SysTick 是 Cortex-M 内核中的一个系统定时器,经常被用作系统中断控制器的基础,或者作为操作系统的时间片轮转机制的基准。SysTick 会定时产生中断请求,当计数器达到设定值时,SysTick会触发一个SysTick定时器中断,向NVIC发出中断请求。当 SysTick 定时器的计数器值减为零时,会触发一个 SysTick 中断请求,向 NVIC 发送中断请求信号。用于配置 SysTick 定时器的工作模式、使能定时器和中断,并提供定时器当前状态的查询功能。
2024-03-02 20:34:36 906
原创 STM32学习5 时钟系统
系统时钟是STM32微控制器中最重要的部分之一,它负责提供时序信号以驱动处理器核心、外设和其他系统模块的运行。系统时钟通常由多个时钟源、时钟分频器和时钟树组成,这些组件共同构成了系统时钟的组成和层级结构。/*** @brief 配置外部高速时钟(HSE)和 PLL* @param div: PLL输入时钟分频系数* pllm: PLL倍频系数*/// 复位 RCC 寄存器到默认值// 使能外部高速时钟(HSE)// 等待外部时钟稳定// 配置 AHB 时钟分频系数// AHB 不分频。
2024-02-28 14:32:28 945
原创 STM32学习4 位带操作
STM32微控制器中的位带操作(Bit-Banding)是一种特殊的内存映射技术,它允许将特定的位(Bit)与特定的内存地址绑定,从而实现对单个位的原子级操作。位带操作在STM32中通常用于对GPIO端口、寄存器以及其他外设的单个位进行读写操作,提高了代码的可读性和效率。
2024-02-27 13:35:06 856
原创 STM32 学习2 库函数控制GPIO输出
GPIO是STM32微控制器上的一组引脚,可配置为输入或输出模式,用于与外部设备进行数字信号交换。每个GPIO引脚都有一个唯一的编号,通常称为引脚名称或引脚号码。STM32系列微控制器通常具有多个GPIO引脚,数量取决于具体型号。GPIO模块是STM32微控制器中非常重要的功能之一,它允许微控制器与外部设备进行数字信号交换。通过正确配置和使用GPIO,可以实现各种应用,包括传感器接口、控制输出设备等。
2024-02-18 15:46:24 1065
原创 Three.JS教程5 threejs中的材质
在Three.js中,材质是应用于几何体(Geometry)的外观和纹理的规则。它们决定了对象在场景中如何反射光线、显示颜色、反射环境等。Three.js提供了各种类型的材质,每种都有不同的特性和用途,使开发人员能够根据需求创建出各种视觉效果。官方文档地址本文源码地码lesson5。
2024-02-16 16:41:19 1187
原创 Linux 内核学习1. 编译并启动一个最小化系统
Linux内核是操作系统的核心组件,负责管理硬件资源、提供系统调用接口以及协调用户空间和硬件之间的交互。内核位于操作系统的最底层,直接与硬件交互,为上层提供服务。Linux内核是开放源代码的,符合 GPL (General Public Licese)开源协议。内核网址:https://kernel.org/截止本文写作时,当前内核主线最新版本是6.8-rc1。
2024-01-31 22:44:34 1015
原创 Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建
H265web.js 是一个用于在 Web 浏览器中播放 H.265 视频的 JavaScript 播放器。它支持在浏览器中直接解码 H.265 编码的视频流,提供了高效的视频播放体验。在 Element UI 项目中集成 H265web.js 可以让我们轻松实现 H.265 视频的播放功能。H265web.js 开源地址:文档地址:目前vue里集成H265web.js 还有一定的复杂度,本文作以详细介绍。
2024-01-31 14:11:31 1343
原创 Linux学习20 使用FRP进行内网穿透实现远程访问
是一款由fatedier开发的高性能的反向代理工具,用于穿透防火墙、NAT等网络障碍,将内网服务映射到公网上。FRP支持TCP、UDP、HTTP等多种协议,操作简单,适用于各种场景。开源地址: https://github.com/fatedier/frp。
2024-01-30 14:29:15 932
原创 Three.JS教程4 threejs中的辅助类
Three.js 提供了一些辅助类(Helpers)以帮助我们更容易地调试、可视化场景中的元素。ArrowHelepr:创建箭头辅助器;AxisHelper: 创建坐标轴辅助器;BoxHelper: 创建包围盒辅助器;Box3Helper:创建可视化Box3的辅助器;CameraHelper:用于创建相机的辅助器;DirectionalLightHelper:创建方向光源;GridHelper:创建网格辅助器;PolarGridHelper:极坐标网格辅助器;
2024-01-22 11:05:41 905
原创 Three.JS教程3 threejs中内置的更多几何体
胶囊几何体是一种有球形顶端和圆柱形部分组合的几何体。radiusTop: 胶囊体顶部的半径;radiusBottom: 胶囊体底部的半径;height: 胶囊体的总高度;radialSegments(径向分段数): 胶囊体周围的圆柱部分的分段数;heightSegments(高度分段数): 胶囊体的高度上的分段数;cappedTop(是否有顶部): 一个布尔值,指示是否有胶囊体的顶部;cappedBottom(是否有底部): 一个布尔值,指示是否有胶囊体的底部;
2024-01-19 13:41:21 870
原创 Three.JS教程1 环境搭建、场景与相机
Three.js 是一款基于JavaScript的开源3D图形库,它简化了在Web上创建复杂的3D场景和动画的过程。Three.js 由Ricardo Cabello(也称为mr.doob)于2010年创建,最初是为了填补WebGL技术在那个时候的不足而设计的。随着WebGL的普及和浏览器性能的提升,Three.js逐渐成为Web上3D图形编程的事实标准之一。官网地址: https://threejs.org/
2024-01-17 09:17:17 1044
原创 Nodejs 入门8 NeDB 轻量级的Node.js 数据库
常用的sqlite轻量级数据库,nodejs在windows环境下安装配置有时候会比较麻烦,很难顺利安装。Nedb(Node Embedded Database)在一些情况下可以替代sqlite,特别适用于小型项目和快速原型开发。本文将介绍Nedb的基本概念、特性和使用方法,以帮助大家更好地了解和利用这个便捷的工具。github官网Nedb是一个基于Node.js的嵌入式数据库,它在内存中存储数据,同时也支持将数据持久化到磁盘。
2024-01-12 10:11:13 1143
原创 Linux学习19 在Ubuntu命令行下使用新硬盘
文件配置的挂载信息会被系统持久化保存,这意味着它们会在系统重启后继续有效。这有助于确保在系统重新启动后,所有必要的文件系统都会被正确挂载。这个文件定义了系统启动时哪些设备(如硬盘分区、光盘、网络文件系统等)应该被挂载到哪些挂载点,并指定了挂载时使用的选项。文件定义了系统在启动时应该自动挂载的所有设备和分区。这确保了在系统启动时,特定设备会被正确挂载到指定的挂载点上。当然,选择其它目录作为挂载点也是可以的。运行以下命令将硬盘挂载到刚创建的挂载点上(假设硬盘为。列出的硬盘信息里,找到要挂载的硬盘。
2024-01-09 16:22:05 824
原创 ESP-C3入门24. 使用中断监控GPIO口
创建一个用于处理 GPIO 中断的函数。// 处理中断事件的代码这里的IRAM_ATTR属性用于将中断处理函数存储在内部 RAM 中,以减少延迟。
2023-09-05 09:46:25 462 2
原创 ESP-C3入门23. I2C读写外部存储器
I2C 是一种串行同步半双工通信协议,总线上可以同时挂载多个主机和从机。I2C 总线由串行数据线 (SDA) 和串行时钟线 (SCL) 线构成。这些线都需要上拉电阻。ESP32-C3 上通常包含两个 I2C 控制器(I2C0 和 I2C1),它们可以分别用于不同的设备或任务。I2C 控制器数量ESP32-C3 通常配备了两个独立的 I2C 控制器,分别命名为 I2C0 和 I2C1。引脚分配每个 I2C 控制器都需要两个引脚:SDA(数据线)和 SCL(时钟线)。
2023-09-05 08:26:33 329 3
原创 Clion 使用ffmpeg 学习1 开发环境配置
在视频处理和多媒体应用程序开发中,FFmpeg 是一个强大的开源工具,它提供了处理音频和视频的丰富功能。CLion 是一款受欢迎的跨平台集成开发环境(IDE),它提供了强大的代码编辑和调试工具。通过官方文档 : https://www.ffmpeg.org/documentation.html 可以查看更多FFmpeg的操作方法。选择合适的版本下载。我这里下载的是 ffmpeg-master-latest-win64-gpl-shared。本文章介绍在CLion下配置FFmpeg开发环境的方法。
2023-09-02 12:24:51 1278
原创 ESP-C3入门22. 基于VSCODE使用内置JTAG调试程序
在ESP32中,内置了一个用于JTAG调试的特殊程序,称为“ESP32 JTAG调试引导模式”。JTAG(Joint Test Action Group)是一种用于测试和调试电路板的标准接口。在嵌入式系统开发中,JTAG可以用于芯片的调试、程序下载、固件更新等操作。ESP32的JTAG调试引导模式允许通过JTAG接口连接到芯片,以便进行硬件级别的调试和分析。
2023-09-01 14:20:08 842
原创 Kotlin入门1. 语法基础
Kotlin是一种静态编程语言,由JetBrains开发。它被设计为与Java兼容,并且可以在Java平台上运行。Kotlin支持现代编程语言的许多特性,如函数式编程、对象导向编程和元编程。这使得Kotlin能够方便地与Java代码混编,并且可以在没有JVM(Java虚拟机)的设备上运行。Kotlin可以编译成Java字节码,因此可以在Java虚拟机上运行。此外,Kotlin也可以编译成JavaScript,使得它可以在浏览器中运行。这使得Kotlin成为一个适用于各种平台的多平台语言。
2023-08-30 19:52:08 140
原创 Electron学习3 使用serialport操作串口
本文将使用 nodejs 的 SerialPort 包来实现串口通讯功能。Node SerialPort 是一个 JavaScript 库,用于连接到在 NodeJS 和 Electron 中工作的串行端口,以下是准备环境:本文操作过程来自:https://girishjoshi.io/post/access-serialport-from-electron-application-and-creating-gui-for-micropython-repl-on-esp8266/文档地址:https:
2023-08-23 08:43:44 1572
原创 Electron学习2 使用Electron-vue和Vuetify UI库
Electron-Vue 是一个使用 Vue.js 构建跨平台桌面应用程序的框架。它基于 Electron,一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的开源库。Electron-Vue 结合了 Vue.js 的灵活性和 Electron 的跨平台能力,使得开发桌面应用程序变得更加简单和高效。使用 Vue.js 构建应用程序:Electron-Vue 提供了基于 Vue.js 的开发体验,你可以使用 Vue.js 的语法和组件系统来构建桌面应用程序。
2023-08-22 10:59:04 1036
原创 Arduino 入门学习笔记12 读写外置EEPROM
外置I2C接口的EEPROM是一种常用的非易失性存储器,通过I2C总线与微控制器或其他设备进行通信。它通常用于存储持久性数据,如配置设置、日志、校准数据等。以下是一些常用的外置I2C接口的EEPROM型号以及它们的特点:24C系列:Microchip的24C系列EEPROM是一些常见的I2C接口EEPROM型号。它们分为24C01到24C512等不同容量的型号,容量从128字节到64K字节不等。这些EEPROM设备在I2C总线上占用7位或8位的设备地址,并且通常具有多个页,可实现更高的写入速度。
2023-08-18 11:09:45 1046
原创 Arduino 入门学习笔记11 读写内置EEPROM
Arduino的内置EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种用于存储持久性数据的非易失性存储器,它嵌入在Arduino微控制器芯片内部。与外部EEPROM不同,Arduino的内置EEPROM通常具有较小的存储容量,通常在几百字节到几千字节之间,具体取决于Arduino的型号和芯片。以下是关于Arduino的内置EEPROM的重要信息:容量:不同型号的Arduino板在芯片上都有内置EEPROM。
2023-08-18 09:52:50 1067
原创 ESP-C3入门21. I2C接口点亮1306驱动的OLED屏
地址:Espressif/ssd1306 是 Espressif Systems 开发的用于 SSD1306 驱动芯片的库,用于在 ESP32 和 ESP8266 上控制 SSD1306 型号的 OLED 显示屏。这个库提供了一组函数和接口,使得开发者可以在 ESP-IDF 框架中方便地控制和管理这种类型的 OLED 显示屏。OLED 控制:该库允许你控制 SSD1306 驱动的 OLED 显示屏,包括初始化、绘制图像、显示文本等。
2023-08-17 20:06:37 560
原创 Esp8266学习7. 点亮JMD0.96C-1 OLED屏
ESP8266具有一个I2C控制器,通常称为I2C主机。这个I2C控制器可以用来连接各种I2C外设,如传感器、显示屏等。SDA(Serial Data Line):通信数据线SCL(Serial Clock Line):时钟线这两个引脚的位置可以根据具体的ESP8266开发板而有所不同。引入Wire库:在Arduino代码中引入Wire库,该库提供了与I2C通信相关的函数。
2023-08-17 16:43:25 546
原创 Arduino 入门学习笔记10 使用I2C的OLED屏幕
本次试验采用的OLED屏是使用I2C接口通讯的0.96寸屏,采用 SSD1306 驱动,有4个引脚。单色, 128x64像素。SSD1306是一款单片CMOS OLED/PLED驱动器,具有有机/聚合物发光控制器二极管点阵图形显示系统。这款芯片专为共阴极OLED面板设计,具有内置对比度控制器、显示RAM和振荡器,可以减少外部元件的数量和功耗。其分辨率为128x64,适用于许多小型便携式应用,如手机副显示屏、MP3播放器和计算器等。
2023-08-17 11:01:46 2613
原创 Electron学习1 安装环境与第一个程序
Electron是一个用于构建跨平台桌面应用程序的开源库。它使用HTML、CSS和JavaScript等技术,通过将Web技术打包为原生应用程序,使得开发者能够创建出具有本地操作系统特性的软件。Electron使用Chromium作为渲染引擎,并允许开发者使用Node.js来访问底层系统资源。本文将介绍electron开发环境配置。windows10一款编辑器软件,如vscode。
2023-08-09 08:25:12 734
tcpdump for android arm
2016-01-07
php redis驱动for win
2015-12-29
mysql-connector-net-6.3.9.rar
2015-06-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人