- 博客(45)
- 收藏
- 关注
原创 linux的基础入门2
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(超级管理员)而在前期,我们一直使用的账户是普通的用户普通用户的权限,一般在其HOME目录内是不受限的一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限su和exit命令在前面,我们接触过su命令切换到root账户su命令就是用于账户切换的系统命令,其来源英文单词:Switch User语法: su [-] [用户名]
2025-02-06 22:28:35
1388
原创 Linux基础入门1
vi\vim是visual interface的简称,是Linux中最经典的文本编辑器同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
2025-02-01 19:35:48
951
原创 ESP8266自动配网 – WiFiManager库使用,ESP8266获取并解析心知天气数据
在开始讲解如何使用WiFiManager库来配置ESP8266的WiFi设置前,我们需要首先清除ESP8266的WiFi连接信息,这样才能看到WiFiManager库的工作效果。ESP8266的WiFi设置是储存在它的闪存系统中的。因此在启动ESP8266并连接WiFi时,它都会尝试使用闪存系统中储存的信息来进行WiFi连接。我们可以使用以下示例程序清除ESP8266的闪存中所存储的WiFi连接信息。来实现清除ESP8266的闪存中所存储的WiFi连接信息这一操作。在此程序的第27行位置,使用了。
2024-12-15 13:10:44
1096
原创 JSON( JSON基础,ESP8266 JSON解析)ESP8266通过JSON实现物联网数据通讯( ESP8266客户端请求JSON信息, ESP8266客户端发送JSON信息)
JSON文件乍一看很复杂,但只要注意以下几点就可以分析出JSON数据内容。:用于分隔数据的“名”和“值”{} 标注对象内容[]标注数组内容,分隔数据、对象和数组对象用于存放数据(名值对)。对象不能直接存放对象或数组。数组存放元素有序号(序号起始值0)。数组不能直接存放数据(名值对)。
2024-12-15 13:00:50
1074
原创 Stream– ESP8266物联网应用,(客户端向服务器发送数据信息& 客户端向服务器请求数据信息)
请求行:定义了 HTTP 请求的基本信息,包括请求方法、请求资源和协议版本。请求头:包含了额外的信息,如客户端环境、支持的响应格式、身份验证信息等,用来协助服务器处理请求。请求体:用于传输客户端要发送给服务器的实际数据,通常与POSTPUT等方法一起使用。这三部分共同构成了一个完整的 HTTP 请求,服务器根据这些信息来处理客户端请求并生成相应的响应。
2024-12-15 11:23:29
1178
原创 Esp8266闪存文件系统 Esp8266网络客户端基本操作
每一个ESP8266都配有一个闪存,这个闪存很像是一个小硬盘,我们上传的文件就被存放在这个闪存里。这个闪存的全称是Serial Peripheral Interface Flash File System(SPIFFS)。除了可以存放上传的程序以外,我们还可以将网页文件或者系统配置文件存放在ESP8266的闪存中。在这节课里,我们将学习如何利用程序对闪存文件系统(SPIFFS)进行文件读取和修改。在使用SPIFFS存储文件以前,我们必须使用,如以上程序第18行所示。
2024-12-08 17:20:07
994
原创 ESP8266(物联网开发基础,网络服务器)
我们的ESP866-NodeMCU虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能。当网站服务器收到了请求后,会把被请求的网页信息传输给浏览器,然后浏览器就会把收到的网页信息转换成网页显示在浏览器中。值得注意的是,该HTML代码会不断地检查变量pinState状态,并且根据pinState的状态改变HTML代码的信息,从而实现在网页上显示引脚状态。该网站的页面会实时显示NodeMCU的引脚状态。
2024-11-29 11:15:59
888
原创 互联网基础
网关是物联网(IoT)和智能设备系统中的关键设备,它充当着不同网络和设备之间的桥梁。模式的协议,客户端(通常是浏览器)向服务器发送请求,服务器处理请求后返回响应。:服务器接收到请求后,根据请求的内容和资源进行处理,可能需要从数据库中获取数据或执行其他操作。保证所有数据都能被接收端接收,数据的传输顺序不会打乱,传输数据如有损坏则重发受损数据。总的来说,DNS是互联网通信中的关键技术,确保用户能够通过友好的域名访问网络资源。(万维网)上数据交换的基础协议,广泛应用于网站、应用程序的访问和数据交换。
2024-11-28 15:30:44
1003
原创 任务中断的两套API函数(改进FormISR的实时性)资源管理_互斥操作的本质(解决DH11经常出错的问题)
为什么需要两套 API在任务函数中,我们可以调用各类 API 函数,比如队列操作函数:xQueueSendToBack。但是在 ISR 中使用这个函数会导致问题,应该使用另一个函数:xQueueSendToBackFromISR,它的函数名含有后缀"FromISR",表示"从 ISR 中给队列发送数据"。FreeRTOS中很多API函数都有两套:一套在任务中使用,另一套在ISR中使用。后者的函数名含有"FromISR"后缀。为什么要引入两套API函数?⚫很多API。
2024-11-23 15:52:58
1023
原创 任务通知的本质(任务通知车辆运行) 软件定时器的本质(增加游戏音效)
所谓"任务通知",你可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。使用队列、信号量、事件组时,我们都要事先创建对应的结构体,双方通过中间的结构体通信。
2024-11-22 16:55:51
1343
原创 事件组(本质,车辆协同,改进姿态控制)
事件组的概念事件组可以简单地认为就是一个整数:⚫的每一位表示一个事件⚫每一位事件的含义由程序员决定,比如:Bit0表示用来串口是否就绪,Bit1表示按键是否被按下⚫这些位,值为1表示事件发生了,值为0表示事件没发生⚫一个或多个任务、ISR都可以去写这些位;一个或多个任务、ISR都可以去读这些位⚫ 可以等待某一位、某些位中的任意一个,也可以等待多位高八位用来表示是与关系还是或关系低八位用来表示是哪个任务的开启。
2024-11-11 11:39:38
924
原创 信号量本质 信号量实验(控制车辆运行,优先级反转)互斥量
前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示,比如:⚫卖家:做好了1个包子!做好了2个包子!做好了3个包子!⚫买家:买了1个包子,包子数量减1⚫这个停车位我占了,停车位减1⚫我开车走了,停车位加1在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存信号量的特性信号量的常规操作信号量这个名字很恰当:⚫信号:起通知作用⚫。
2024-11-02 20:10:19
1188
原创 FreeRTOS 队列实验改进程序框架 分发数据给多个任务
假设有 2 个输入设备:红外遥控器、旋转编码器,它们的驱动程序应该专注于“产生硬件数据”,不应该跟“业务有任何联系”。比如:红外遥控器驱动程序里,它只应该把键值记录下来、写入某个队列,它不应该把键值转换为游戏的控制键。在红外遥控器的驱动程序里,不应该有游戏相关的代码,这样,切换使用场景时,这个驱动程序还可以继续使用。把红外遥控器的按键转换为游戏的控制键,应该在游戏的任务里实现。要支持多个输入设备时,我们需要实现一个“InputTask”,它读取各个设备的队列,得到数据后再分别转换为游戏的控制键。
2024-11-01 16:44:28
1023
原创 FreeRTOS同步互斥与通信(有缺陷的同步示例,有缺陷的互斥示例)
同步主要关注操作的顺序和条件,确保各线程按预期顺序执行。互斥关注资源的独占访问,确保同一时间只有一个线程可以操作共享资源。这两者结合使用,可以有效地管理多线程环境中的资源访问和执行顺序,从而提高程序的稳定性和性能。一句话理解同步与互斥:我等你用完厕所,我再用厕所。什么叫同步?就是:哎哎哎,我正在用厕所,你等会。什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来。同步与互斥经常放在一起讲,是因为它们之的关系很大,互斥操作可以使用同步来实现。我等你用完厕所,我再用厕所。这不就是用。
2024-10-25 22:00:11
1547
原创 FreeRTOS任务状态_改进播放控制 任务管理与调度 空闲任务及其钩子函数 两个Delay函数
在这个文章中我们简单的实现了任务的删除与创建 但是怎么才能实现任务的暂停与继续在我们执行任务时我们有任务的准备(ready)以及任务的运行(Running)同时也有任务阻塞(Blocked),以及任务的暂停如图空闲任务(Idle 任务)的作用之一:释放被删除的任务的内存。除了上述目的之外,为什么必须要有空闲任务?一个良好的程序,它的任务都是事件驱动的:平时大部分时间处于阻塞状态。有可能我们自己创建的所有任务都无法执行,但是调。
2024-10-24 20:32:50
1359
原创 FreeRTOS源码概述(内存管理,入口函数,数据类型和编程规范)创建任务(声光色影,使用任务参数)删除任务(使用遥控器控制音乐)
入口函数在 Core\Src\main.c 的 main 函数里,初始化了 FreeRTOS 环境、创建了任务,然后启动调度器。初始化FreeRTOS运行环境创建任务启动调度器这样就可以运行FreeRTOS内的代码任务数据类型和编程规范数据类型每个移植的版本都含有自己的头文件(其实就相当于对FreeRTOS代码进行规范),里面定义了2个数据类型:TickType_t◼FreeRTOS配置了一个周期性的时钟中断:◼每发生一次中断,中断次数累加,这被称为tick count。
2024-10-23 08:00:00
1706
原创 FreeRTOS基于汇编语言理解堆的概念,栈的概念(函数调用,局部变量,FreeRTOS如何使用栈)
在 ARM 系统中,栈和堆各自承担着重要的角色,栈用于快速管理局部数据,堆则用于处理动态数据。合理地使用这两种内存管理方式能够提高程序性能和稳定性。在 ARM 架构中,堆的分配和初始化过程中分配一个空的空间,有助于满足对齐要求、管理元数据、减少碎片化、提高安全性以及支持动态扩展。这些措施共同确保了内存管理的高效性和可靠性。
2024-10-22 08:00:00
1289
原创 关于按键状态机解决Delay给程序带来的问题
IDLE,//按键按下PRESSED,//按键确定状态RELEASED//按键释放}KeyState;Key=1;
2024-10-01 21:15:03
1337
原创 C语言指针详解与应用(不断更新)
指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针 定义一个指针变量:在定义指针时,它分配的字节大小是由计算机本身决定的,32位操作系统分配四个字节,64位操作系统分配8个字节。
2024-09-30 20:48:35
1371
原创 stm32 FLASH闪存(读写内部FLASH&读取芯片ID)
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)(FLASH管理员)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途:利用程序存储器的剩余空间来保存掉电不丢失的用户数据通过在程序中编程(IAP),实现程序的自我更新在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG(stm32特有协议)、SWD协议(通用协议)或系统加载程序(Bootloader)下载程序。
2024-09-21 22:04:33
3588
2
原创 stm32 WDG看门狗(独立看门狗&窗口看门狗)
WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号STM32内置两个看门狗独立看门狗(IWDG):独立工作,对时间精度要求较低窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。
2024-09-20 19:51:03
1111
原创 stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)
PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间简介。
2024-09-19 15:20:53
2001
原创 stm32 Unix时间戳&BKP备份寄存器&RTC实时时钟(读写备份寄存器&实时时钟)
BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲存储RTC时钟校准寄存器用户数据存储容量:20字节(中容量和小容量)/ 84字节(大容量和互联型)RTC(Real Time Clock)实时时钟。
2024-09-18 21:26:46
1260
原创 stm32 SPI通信外设(硬件SPI读写W25Q64)
为了使STM32的GPIO口能够由硬件外设控制,并且满足外设对信号稳定性和驱动能力的需求,需要将GPIO口配置为复用推挽输出模式。这种配置不仅满足了外设的功能要求,还提供了引脚的多功能复用能力,使得系统设计更为灵活和高效。
2024-09-13 20:58:42
1921
原创 stm32 SPI通信协议&W25Q64(软件SPI读写W25Q64)
所有SPI设备的SCK、MOSI、MISO分别连在一起主机另外引出多条SS控制线,分别接到各从机的SS引脚输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入高位先行起始条件:SS从高电平切换到低电平 终止条件:SS从低电平切换到高电平向SS指定的设备,发送指令(0x06)向SS指定的设备,发送写指令(0x02), 随后在指定地址(Address[23:0])下,写入指定数据(Data)向SS指定的设备,发送读指令(0x03), 随后在指定地址(Address[23:0])下,读取从机数
2024-09-12 21:24:20
1768
原创 stm32 I2C通信外设(硬件I2C读写MPU6050)
TXE:用于指示发送数据寄存器是否准备好接收新的数据进行发送。RXNE:用于指示接收数据寄存器是否有新接收的数据可供读取。
2024-09-11 21:49:01
1504
原创 stm32 I2C通信与MPU6050(软件I2C读写MPU6050)
MPU6050需要通信协议(I2C或SPI)来交换数字数据,因为它的内部数据需要通过这些协议来传输和解析。模拟输出型红外传感器直接输出电压信号,通常不需要通信协议,只需通过ADC将模拟信号转换为数字信号,然后微控制器处理这些数字信号。在处理数字信号的情况下(如MPU6050),通信协议负责数据的完整性和解析。而对于模拟信号(如某些红外传感器),传输方式是直接的电压变化,ADC负责将这些信号转换成数字形式进行处理。
2024-09-10 21:27:28
2091
2
原创 c语言结构体(不断更新)
定义一个struct是关于man的,这个就相当于说我定义一个类型(比如int)struct man是类型 zaq属于变量关于C语言中把字符串赋值给字符数组的问题这样的写法是不可行的,正确的方法是使用strcpy函数来复制但是如果是开始定义数组并赋值时则可以。
2024-09-08 15:03:47
738
原创 stm32 USART串口数据包(串口收发HEX数据包&串口收发文本数据包)
【代码】stm32 USART串口数据包(串口收发HEX数据包&串口收发文本数据包)
2024-09-07 17:46:46
682
原创 stm32 USART串口(串口发送&串口发送+接收)
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器 USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里 自带波特率发生器,最高达4.5Mbits/s可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)可选校验位(无校验/奇校验/偶校验)
2024-09-06 20:09:34
4136
原创 stm32DMA直接存储器存取 (DMA数据转运&DMA+AD多通道)
DMA(Direct Memory Access)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发STM32F103C8T6 DMA资源:DMA1(7个通道)
2024-09-05 12:29:19
797
原创 ADC模数转换器(AD单通道&无DMA的AD多通道)
ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道。
2024-09-04 08:00:00
1195
原创 ST-Link usb communication error,如何解决STlink驱动连不上的错误
关闭ST-LinkUpgrade.exe,并打开USBDriver,找到stlink_winusb_install.bat并点击。先拔掉ST-Link,然后再插上,接着点击Device Connect。找到ST-LinkUpgrade.exe并点击。点击ARM找见STLink并点击。如果没解决多尝试几次。
2024-09-03 08:30:00
1047
原创 TIM编码器接口(带有方向选择的外部时钟)--编码器接口测速
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2。
2024-09-02 21:12:35
815
原创 STM32 TIM输入捕获(输入捕获模式测频率&&PWMI模式测频率占空比)
IC(Input Capture)输入捕获每个高级定时器和通用定时器都拥有4个输入捕获通道可配置为PWMI模式,同时测量频率和占空比可配合主从触发模式,实现硬件全自动测量。
2024-09-01 20:27:24
1641
原创 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)
PWM(Pulse Width Modulation)脉冲宽度调制 在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域 PWM参数:频率 = 1 / Ts 占空比 = TON / Ts 分辨率 = 占空比变化步距舵机是一种根据输入PWM信号占空比来控制输出角度的装置 输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms。
2024-08-31 16:21:17
1919
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人