自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 蓝桥杯嵌入式赛道复习笔记8(eeprom读写)

自己看一下江科大的存储器的读取,原理是一样的。只是使用了IIC原理是不变的。

2025-03-27 19:50:54 194

原创 蓝桥杯嵌入式赛道复习笔记7(usart数据发送与接收)

USART(通用同步/异步收发器)则是一种异步串行通信协议,其中数据传输不依赖于外部时钟信号,而是使用预设的波特率来同步发送和接收设备的操作。定义:信号变化不依赖于一个共同的时钟信号,而是基于信号之间的相对时间关系进行处理。总的来说,I2C的同步时序依赖于时钟信号的同步,而USART的异步时序依赖于预设的波特率来进行数据传输。优点:不需要时钟信号,可以在不同的时钟域中操作,适合于低功耗和灵活性的应用场景。缺点:需要额外的时钟信号,可能导致时钟信号的干扰或时钟频率的限制。

2025-03-24 09:49:18 363

原创 蓝桥杯嵌入式赛道复习笔记6(adc测量)

在 STM32 中,捕获的电压信号是模拟信号,必须通过 ADC 转换为数字信号才能被 STM32 处理。虽然 GPIO 的肖特触发器可以用于简单的数字信号输入,但它无法处理连续变化的模拟信号,因此 ADC 是处理模拟信号的关键组件。在STM32中,直接通过写高电平和低电平来输出电压,只能输出两种状态:高电平(通常为3.3V或5V)和低电平(通常为0V)。这种方式只能用于数字信号的输出,无法输出模拟信号。为什么不能直接通过写高电平和低电平来输出模拟信号?

2025-03-23 21:23:14 592

原创 蓝桥杯嵌入式赛道复习笔记5(捕获信号发生器的PWM的波形)

【代码】蓝桥杯嵌入式赛道复习笔记5(捕获信号发生器的PWM的波形)

2025-03-20 20:30:21 153

原创 蓝桥杯嵌入式赛道复习笔记4(TIM输出PWM,TIM输入捕获)

假如要得到输出频率为1000HZ。

2025-03-19 20:26:52 238

原创 蓝桥杯嵌入式赛道复习笔记3(lcd与led引脚冲突问题)

切记一定要开启PD2的引脚,否则白搭。2.在用到的lcd函数要加。

2025-03-18 20:05:09 249

原创 蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)

这张图展示了一个简单的按键电路原理图,其中包含四个按键(PB0、PB1、PB2、PB3、PA0),每个按键通过一个10kΩ的上拉电阻连接到VDD(电源电压),并接地(GND)。:当按键未被按下时,由于上拉电阻的存在,按键的引脚(例如PB1)通过电阻R2被拉高到VDD电压,此时为高电平。:当按键被按下时,按键的引脚直接连接到地(GND),此时为低电平。:图中描述了输入模式为“既不是上拉输入也不是下拉输入”,这意味着按键的引脚在未被按下时为高电平,按下时为低电平。

2025-03-17 21:54:56 591 1

原创 蓝桥杯嵌入式赛道复习笔记1(led点亮)

1.由于存在PC8引脚到PC15引脚存在冲突,那么官方硬件给的解决方案是加入了一个PD2锁存器,但是有这个是远远不够的,如果想要解决,可以在LED笔记那里观看解决2.LED只有设置为低电压时才可以让我们的灯泡亮。

2025-03-15 21:09:20 445

原创 linux的基础入门2

无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(超级管理员)而在前期,我们一直使用的账户是普通的用户普通用户的权限,一般在其HOME目录内是不受限的一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限su和exit命令在前面,我们接触过su命令切换到root账户su命令就是用于账户切换的系统命令,其来源英文单词:Switch User语法: su [-] [用户名]

2025-02-06 22:28:35 1335

原创 Linux基础入门1

vi\vim是visual interface的简称,是Linux中最经典的文本编辑器同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

2025-02-01 19:35:48 905

原创 VMware 中Ubuntu无网络连接/无网络标识解决方法【已解决】

本人昨天刚解决可能写的有些乱,有问题可以私聊解决。

2025-01-27 11:54:31 1380

原创 ROS2 准备工作(虚拟机安装,Ubuntu安装,ROS2系统安装)

教程:【【2025最新版】VMware虚拟机安装教程,手把手教你免费安装激活】https://www.bilibili.com/video/BV1AbynYDEoG?大家可以自行去安装VMware链接:https://pan.baidu.com/s/1KcN1I9FN--Sp1bUsjKqWVA?我下载的是这个(ubuntu-22.04.2-desktop-amd64.iso)找到你的Ubuntu镜像,点击,之后点击确定,开启虚拟机。这里分配的磁盘大小要大一点,要不然大一点的项目跑不了。

2025-01-15 21:38:10 532

原创 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 895

原创 JSON( JSON基础,ESP8266 JSON解析)ESP8266通过JSON实现物联网数据通讯( ESP8266客户端请求JSON信息, ESP8266客户端发送JSON信息)

JSON文件乍一看很复杂,但只要注意以下几点就可以分析出JSON数据内容。:用于分隔数据的“名”和“值”{} 标注对象内容[]标注数组内容,分隔数据、对象和数组对象用于存放数据(名值对)。对象不能直接存放对象或数组。数组存放元素有序号(序号起始值0)。数组不能直接存放数据(名值对)。

2024-12-15 13:00:50 874

原创 Stream– ESP8266物联网应用,(客户端向服务器发送数据信息& 客户端向服务器请求数据信息)

请求行:定义了 HTTP 请求的基本信息,包括请求方法、请求资源和协议版本。请求头:包含了额外的信息,如客户端环境、支持的响应格式、身份验证信息等,用来协助服务器处理请求。请求体:用于传输客户端要发送给服务器的实际数据,通常与POSTPUT等方法一起使用。这三部分共同构成了一个完整的 HTTP 请求,服务器根据这些信息来处理客户端请求并生成相应的响应。

2024-12-15 11:23:29 1084

原创 Esp8266闪存文件系统 Esp8266网络客户端基本操作

每一个ESP8266都配有一个闪存,这个闪存很像是一个小硬盘,我们上传的文件就被存放在这个闪存里。这个闪存的全称是Serial Peripheral Interface Flash File System(SPIFFS)。除了可以存放上传的程序以外,我们还可以将网页文件或者系统配置文件存放在ESP8266的闪存中。在这节课里,我们将学习如何利用程序对闪存文件系统(SPIFFS)进行文件读取和修改。在使用SPIFFS存储文件以前,我们必须使用,如以上程序第18行所示。

2024-12-08 17:20:07 903

原创 ESP8266(物联网开发基础,网络服务器)

我们的ESP866-NodeMCU虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能。当网站服务器收到了请求后,会把被请求的网页信息传输给浏览器,然后浏览器就会把收到的网页信息转换成网页显示在浏览器中。值得注意的是,该HTML代码会不断地检查变量pinState状态,并且根据pinState的状态改变HTML代码的信息,从而实现在网页上显示引脚状态。该网站的页面会实时显示NodeMCU的引脚状态。

2024-11-29 11:15:59 798

原创 互联网基础

网关是物联网(IoT)和智能设备系统中的关键设备,它充当着不同网络和设备之间的桥梁。模式的协议,客户端(通常是浏览器)向服务器发送请求,服务器处理请求后返回响应。:服务器接收到请求后,根据请求的内容和资源进行处理,可能需要从数据库中获取数据或执行其他操作。保证所有数据都能被接收端接收,数据的传输顺序不会打乱,传输数据如有损坏则重发受损数据。总的来说,DNS是互联网通信中的关键技术,确保用户能够通过友好的域名访问网络资源。(万维网)上数据交换的基础协议,广泛应用于网站、应用程序的访问和数据交换。

2024-11-28 15:30:44 982

原创 任务中断的两套API函数(改进FormISR的实时性)资源管理_互斥操作的本质(解决DH11经常出错的问题)

为什么需要两套 API在任务函数中,我们可以调用各类 API 函数,比如队列操作函数:xQueueSendToBack。但是在 ISR 中使用这个函数会导致问题,应该使用另一个函数:xQueueSendToBackFromISR,它的函数名含有后缀"FromISR",表示"从 ISR 中给队列发送数据"。FreeRTOS中很多API函数都有两套:一套在任务中使用,另一套在ISR中使用。后者的函数名含有"FromISR"后缀。为什么要引入两套API函数?⚫很多API。

2024-11-23 15:52:58 971

原创 任务通知的本质(任务通知车辆运行) 软件定时器的本质(增加游戏音效)

所谓"任务通知",你可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。使用队列、信号量、事件组时,我们都要事先创建对应的结构体,双方通过中间的结构体通信。

2024-11-22 16:55:51 1286

原创 事件组(本质,车辆协同,改进姿态控制)

事件组的概念事件组可以简单地认为就是一个整数:⚫的每一位表示一个事件⚫每一位事件的含义由程序员决定,比如:Bit0表示用来串口是否就绪,Bit1表示按键是否被按下⚫这些位,值为1表示事件发生了,值为0表示事件没发生⚫一个或多个任务、ISR都可以去写这些位;一个或多个任务、ISR都可以去读这些位⚫ 可以等待某一位、某些位中的任意一个,也可以等待多位高八位用来表示是与关系还是或关系低八位用来表示是哪个任务的开启。

2024-11-11 11:39:38 878

原创 信号量本质 信号量实验(控制车辆运行,优先级反转)互斥量

前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示,比如:⚫卖家:做好了1个包子!做好了2个包子!做好了3个包子!⚫买家:买了1个包子,包子数量减1⚫这个停车位我占了,停车位减1⚫我开车走了,停车位加1在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存信号量的特性信号量的常规操作信号量这个名字很恰当:⚫信号:起通知作用⚫。

2024-11-02 20:10:19 1151

原创 FreeRTOS 队列实验改进程序框架 分发数据给多个任务

假设有 2 个输入设备:红外遥控器、旋转编码器,它们的驱动程序应该专注于“产生硬件数据”,不应该跟“业务有任何联系”。比如:红外遥控器驱动程序里,它只应该把键值记录下来、写入某个队列,它不应该把键值转换为游戏的控制键。在红外遥控器的驱动程序里,不应该有游戏相关的代码,这样,切换使用场景时,这个驱动程序还可以继续使用。把红外遥控器的按键转换为游戏的控制键,应该在游戏的任务里实现。要支持多个输入设备时,我们需要实现一个“InputTask”,它读取各个设备的队列,得到数据后再分别转换为游戏的控制键。

2024-11-01 16:44:28 958

原创 FreeRTOS 数据传输方法(环形buffer,队列的本质)队列实验—多设备玩游戏

环形buffer的本质就是一个循环队列,但是有一些不同。

2024-10-30 17:26:02 1272

原创 FreeRTOS同步互斥与通信(有缺陷的同步示例,有缺陷的互斥示例)

同步主要关注操作的顺序和条件,确保各线程按预期顺序执行。互斥关注资源的独占访问,确保同一时间只有一个线程可以操作共享资源。这两者结合使用,可以有效地管理多线程环境中的资源访问和执行顺序,从而提高程序的稳定性和性能。一句话理解同步与互斥:我等你用完厕所,我再用厕所。什么叫同步?就是:哎哎哎,我正在用厕所,你等会。什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来。同步与互斥经常放在一起讲,是因为它们之的关系很大,互斥操作可以使用同步来实现。我等你用完厕所,我再用厕所。这不就是用。

2024-10-25 22:00:11 1463

原创 FreeRTOS任务状态_改进播放控制 任务管理与调度 空闲任务及其钩子函数 两个Delay函数

在这个文章中我们简单的实现了任务的删除与创建 但是怎么才能实现任务的暂停与继续在我们执行任务时我们有任务的准备(ready)以及任务的运行(Running)同时也有任务阻塞(Blocked),以及任务的暂停如图空闲任务(Idle 任务)的作用之一:释放被删除的任务的内存。除了上述目的之外,为什么必须要有空闲任务?一个良好的程序,它的任务都是事件驱动的:平时大部分时间处于阻塞状态。有可能我们自己创建的所有任务都无法执行,但是调。

2024-10-24 20:32:50 1297

原创 FreeRTOS源码概述(内存管理,入口函数,数据类型和编程规范)创建任务(声光色影,使用任务参数)删除任务(使用遥控器控制音乐)

入口函数在 Core\Src\main.c 的 main 函数里,初始化了 FreeRTOS 环境、创建了任务,然后启动调度器。初始化FreeRTOS运行环境创建任务启动调度器这样就可以运行FreeRTOS内的代码任务数据类型和编程规范数据类型每个移植的版本都含有自己的头文件(其实就相当于对FreeRTOS代码进行规范),里面定义了2个数据类型:TickType_t◼FreeRTOS配置了一个周期性的时钟中断:◼每发生一次中断,中断次数累加,这被称为tick count。

2024-10-23 08:00:00 1613

原创 FreeRTOS基于汇编语言理解堆的概念,栈的概念(函数调用,局部变量,FreeRTOS如何使用栈)

在 ARM 系统中,栈和堆各自承担着重要的角色,栈用于快速管理局部数据,堆则用于处理动态数据。合理地使用这两种内存管理方式能够提高程序性能和稳定性。在 ARM 架构中,堆的分配和初始化过程中分配一个空的空间,有助于满足对齐要求、管理元数据、减少碎片化、提高安全性以及支持动态扩展。这些措施共同确保了内存管理的高效性和可靠性。

2024-10-22 08:00:00 1208

原创 FreeRTOS工程创建,创建多任务程序,基于汇编对ARM架构的简单理解

用途不同。

2024-10-21 11:06:02 938

原创 stm32四足机器人(标准库)

可以同时开启多个定时器的内部时钟配置,只需确保每个定时器都被正确初始化和配置即可。

2024-10-02 19:03:15 2410 2

原创 关于按键状态机解决Delay给程序带来的问题

IDLE,//按键按下PRESSED,//按键确定状态RELEASED//按键释放}KeyState;Key=1;

2024-10-01 21:15:03 1191

原创 C语言指针详解与应用(不断更新)

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针 定义一个指针变量:在定义指针时,它分配的字节大小是由计算机本身决定的,32位操作系统分配四个字节,64位操作系统分配8个字节。

2024-09-30 20:48:35 1321

原创 stm32 FLASH闪存(读写内部FLASH&读取芯片ID)

STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)(FLASH管理员)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途:利用程序存储器的剩余空间来保存掉电不丢失的用户数据通过在程序中编程(IAP),实现程序的自我更新在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG(stm32特有协议)、SWD协议(通用协议)或系统加载程序(Bootloader)下载程序。

2024-09-21 22:04:33 3299 2

原创 stm32 WDG看门狗(独立看门狗&窗口看门狗)

WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号STM32内置两个看门狗独立看门狗(IWDG):独立工作,对时间精度要求较低窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。

2024-09-20 19:51:03 1075

原创 stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)

PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间简介。

2024-09-19 15:20:53 1857

原创 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 1177

原创 stm32 SPI通信外设(硬件SPI读写W25Q64)

为了使STM32的GPIO口能够由硬件外设控制,并且满足外设对信号稳定性和驱动能力的需求,需要将GPIO口配置为复用推挽输出模式。这种配置不仅满足了外设的功能要求,还提供了引脚的多功能复用能力,使得系统设计更为灵活和高效。

2024-09-13 20:58:42 1754

原创 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 1666

原创 stm32 I2C通信外设(硬件I2C读写MPU6050)

TXE:用于指示发送数据寄存器是否准备好接收新的数据进行发送。RXNE:用于指示接收数据寄存器是否有新接收的数据可供读取。

2024-09-11 21:49:01 1379

原创 stm32 I2C通信与MPU6050(软件I2C读写MPU6050)

MPU6050需要通信协议(I2C或SPI)来交换数字数据,因为它的内部数据需要通过这些协议来传输和解析。模拟输出型红外传感器直接输出电压信号,通常不需要通信协议,只需通过ADC将模拟信号转换为数字信号,然后微控制器处理这些数字信号。在处理数字信号的情况下(如MPU6050),通信协议负责数据的完整性和解析。而对于模拟信号(如某些红外传感器),传输方式是直接的电压变化,ADC负责将这些信号转换成数字形式进行处理。

2024-09-10 21:27:28 1855 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除