自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS学习笔记-基于stm32(14)内存管理

FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请 RAM。我们在移植FreeRTOS时可以看到在 FreeRTOS 源码中有 heap_1.c、heap_2.c、heap_3.c、heap_4.c 和 heap_5.c 五种内存分配方法,我们当时移植的是 heap_4.c。标准 C 库中的和也可以实现动态内存管理,但不是线程安全的,且执行时间不确定,效率低下等等。

2024-06-12 05:00:00 414

原创 FreeRTOS学习笔记-基于stm32(13)低功耗 Tickless 模式

STM32 本身就支持低功耗模式,如图有三种模式:睡眠(Sleep)模式;停止(Stop)模式;待机(Standby)模式。

2024-06-12 04:00:00 464

原创 FreeRTOS学习笔记-基于stm32(12)软件定时器

软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能,执行功能的函数称为。相比于硬件定时器,软件定时器精度能差点(因为优先级低容易被打断)但是却不像硬件定时器那样资源有限。软件定时器的回调函数是在中执行的,所以不能在回调函数中调用任何会阻塞任务的 API 函数!比如 vTaskDelay()、 vTaskDelayUnti(),还有一些访问队列或者信号量的非零阻塞时间的 API 函数也不能调用。

2024-06-11 20:45:44 1205

原创 FreeRTOS学习笔记-基于stm32(11)任务通知及相关API函数简介

任务通知与队列,信号量,事件标志组类似,也是一种用于任务通信和同步的机制。

2024-06-11 11:19:21 793

原创 FreeRTOS学习笔记-基于stm32(10)事件标志组

事件位用来表明某个事件是否发生,事件位通常用作事件标志,就类似标志位。

2024-06-05 22:46:50 1049

原创 FreeRTOS学习笔记-基于stm32(9)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)

信号量是一种队列,用于任务间同步和资源管理的机制,主要用来传递状态。就像是一种特殊的“旗子”或“钥匙”,用来在不同的任务之间进行沟通和协调,确保它们能够正确地配合工作,不会互相干扰。

2024-06-05 11:37:53 938

原创 七校联赛题铅笔姿态及笔迹检测装置--mpu6050识别数字

前几天打完比赛,收获还是挺大的,数字识别部分基本上浪费了绝大部分时间。先将思路简单说明。

2024-06-04 22:58:18 672

原创 FreeRTOS学习笔记-基于stm32(8)消息队列

队列是不同任务、中断中数据传递的一种机制,又称消息队列。就类似于全局变量,将数据传输到不同的任务中。但全局变量没有写保护,容易造成数据受损。而。队列类似于数组,可以存储数量有限,大小固定的数据。队列中的每个数据叫做队列项目,能存储最大队列项目的数量交队列的长度。

2024-06-04 12:46:12 562

原创 stm32标准库usart1,usrat2,usart3三个串口的配置以及printf重定向(串口输出)

我刚开始学串口时,因为要用到多个串口,自己又懒得改,总是在网上要找半天。下面将stm32的三个串口配置罗列下来,方便大家直接copy。

2024-06-03 21:35:15 937

原创 基于stm32的双蓝牙主从通信—双蓝牙主从配置、串口配置、串口接收处理浮点数(附测试代码)

此次做的内容是使用 mpu6050 无线控制小车的运动。在做的过程中发现需要用到双蓝牙进行两个板子之间的通信,将主板mpu6050检测的数据传输至从板上从而控制车的移动。

2024-06-03 21:16:37 1312

原创 FreeRTOS学习笔记-基于stm32(7)任务状态查询与任务时间统计API函数

定时器使用stm32的内部定时器3,在 ConfigureTimeForRunTimeStats() 中初始化定时器并配置为每10us中断一次,然后在中断服务函数中将 FreeRTOSRunTimeTicks++,从而达到计时的目的。portCONFIGURE_TIMER_FOdR_RUN_TIME_STATS() 用来初始化用于配置任务运行时间统计的时基定时器,然后查看函数的使用条件,比如这个函数要使用的话必须将宏 INCLUDE_uxTaskPriorityGet 置1;3、在将1完成后需要实现。

2024-05-29 14:25:05 850

原创 正点原子延时函数delay_ms延时失效的原因

今天在测试小车程序的时候使用了如下代码,,本来以为少加了个0,最后在我多次测试下来,发现在延时大约超过2s的时候就会失效。

2024-05-28 22:39:23 598

原创 FreeRTOS学习笔记-基于stm32(6)时间片调度实验

在任务优先级相同的时候,CPU会轮流使用相同的时间去执行它,即时间片调度。这个相同的时间就是。而时间片的大小就是SysTick的中断周期(SysTick的中断周期可以修改)。比如有三个相同优先级的任务在运行,时间片大小为10ms。那么CPU前10ms执行task1,然后用10ms执行task2,再花10ms执行task3,再回到task1执行10ms,这样的轮流执行被称之为时间片流转。如果期间有一个任务执行到一半被挂载了,那么CPU就会立马抛弃这个任务执行下一个任务。

2024-05-08 22:43:00 393 1

原创 MySQL学习笔记

MySQL中的基本操作--增删改查

2024-05-07 23:02:59 747

原创 树莓派学习笔记--串口通信(配置硬件串口进行通信)

硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠;而mini串口性能低,功能单一。所以一般都使用硬件串口。树莓派的串口又分为主串口与辅助串口。主串口可以通过引脚实现通讯,而辅助串口不能使用GPIO引脚通讯且默认被分配给蓝牙端。且默认情况下。mini串口不管将它定义为主串口还是辅助串口,都是禁用的。mini串口 -> ttyS0;硬件串口 -> ttyAMA0;主串口 -> serial0;辅助串口 -> serial1;树莓派上引脚8(TX)和引脚10(RX)是作为主串口的收发端。

2024-04-25 22:19:25 1070

原创 树莓派学习笔记--树莓派终端基本操作与系统备份(全卡备份,压缩备份)

树莓派的官方系统是基于 Debian 的,主要是两个分区:启动分区(boot)、根分区(root),boot分区主要存放系统启动文件和驱动文件,分区格式为Fat32;PiShrink 是 Github 上开源的树莓派压缩工具,通过裁剪上面用 Win32DiskImager 或者 dd 命令全卡备份的镜像,去掉没有内容的分区,从而减小备份镜像的大小。首先将一张新的大于系统SD卡的SD卡插入树莓派中(使用读卡器),弹出的挂载信息中填入密码然后桌面就会有一个新的磁盘/dev/sda1;然后执行如下命令即可。

2024-04-25 20:53:00 525

原创 树莓派学习笔记--Wiring Pi库的安装

在刚开始学习树莓派的时候,新版本操作系统与旧版本有一定的区别,就导致跟着网上的教程来出现了很多问题,然后网上新操作系统的教程又很少,就导致前些时间学习一直没有进展。最近终于是把这些问题解决了。所以记录下来这些东西来帮助大家一块学习。

2024-04-25 17:38:29 480 2

原创 树莓派学习笔记--Raspberry Pi OS系统烧录、SSH远程连接、VNC远程连接、设置静态IP地址

由于一些比赛的需求,目前我将开启一段时间的树莓派学习。目前还是处于一个啥也不知道的萌新状态。希望通过短期的学习能掌握树莓派的基本使用。,下面这个图是b站大佬整理的树莓派的各种型号配置,大家可以了解了解。

2024-04-22 20:36:38 962

原创 14年电赛题--风洞实验--基于STM32与串口屏

我们使用的是位置式PID。由于误差最大是500(mm),然后PWM初值给到5455的时候小球正好被吹起来,PWM上限是7200(看定时器的自动重装载值),就可以算出Kp的大致值为(7200-5455)/500=3.49。

2024-04-21 22:25:56 1330

原创 数据结构课设-基于Python的校园导航系统(附源码)

一月份的数据结构课设完成后,我对Python的了解也更加深刻。现将课设报告及源码开源,不足之处希望大家指正。源码我放在博客主页的资源中,需要的话大家自行下载。

2024-03-29 16:08:06 1515 1

原创 基于stm32与TJC3224T124_011串口屏的PID调参器(附完整工程)

电赛在即,每次比赛调PID都是一件比较繁琐的事。每次都要在程序中改完再烧录到板子上,特别耗时。正好最近发现实验室的一块串口屏比较好玩。于是就做了这个调PID的东西。它可以,从而达到快速调PID的目的。下面我将完整工程分享给大家。

2024-03-26 22:29:21 1329

原创 21年电赛-送药小车—基于OpenMV的寻迹+检测路口+数字识别(多模版匹配)(附代码)

我们花费了四天时间打了一场21年的电赛改编题——智能送药小车。虽然结果不尽人意,但这是我学习32以来第一次正式的打比赛,对我来说要学习的东西,所增长的经验真的特别多(虽然基本上都是学长在出力~)下来我就把关于这次比赛的感悟和大家分享一下。

2024-03-18 23:47:53 6978 19

原创 FreeRTOS学习笔记-基于stm32(5)列表和列表项

列表是FreeRTOS中的一种数据结构,类似双向循环链表。用来跟踪FreeRTOS中的任务。列表项就是存放在列表中的项目。

2024-03-12 23:37:34 1017

原创 FreeRTOS学习笔记-基于stm32(4)临界段代码保护与任务调度器的挂起和恢复

临界段代码指的是那些不能被打断的代码,例如 IIC,SPI 等对时序有着严格的控制的代码。挂起任务调度器之后,任务不能被调度但是中断可以正常运行。一般适用于临界区位于任务与任务之间。既不用延时中断又可以做到临界区的相对安全

2024-03-11 16:17:06 502

原创 FreeRTOS学习笔记-基于stm32(3)中断管理

FreeRTOS 中,通过 BASEPRI 寄存器,屏蔽优先级低于某一阈值的中断。BASEPRI 寄存器设置为0x50,表示中断优先级在5~15内的均被屏蔽,0~4的正常执行。(因为中断寄存器使用的是8位寄存器的高4位)也就是关闭FreeRTOS的中断 。

2024-03-08 15:22:29 1159

原创 FreeRTOS学习笔记-基于stm32(2)任务的创建与删除,挂起与恢复

首先进行强制类型转换,避免警告(就是给定义的参数类型带上括号)任务函数:就指向任务函数的指针,我此处的任务函数是 void start_task( void * pvParameters ),所以任务函数就是 start_task;任务名称:一般与任务函数一致;任务堆栈大小:通过 #define TASK1_STACK_SIZE 128 宏定义,将堆栈设置为128字,即128*4字节;传递给任务函数的参数:无,即NULL;

2024-03-07 17:53:11 1205

原创 ..\OBJ\LED.axf: Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o)

在查看相关例程后,发现 FreeRTOSConfig.h 文件移植错误,只要将 FreeRTOSConfig.h 文件改为如下代码即可。这是 FreeRTOSConfig.h 文件所在地方。

2024-03-05 21:01:12 533

原创 STM32F103-基于正点原子的 FreeRTOS 移植(完整教程)附测试代码

在看正点原子的移植的时候,发现开发手册的描述并不全面,有几处遗漏。下面我展示出完整的教程,希望大家在学习的时候能够轻松点。

2024-03-04 17:25:15 2869 9

原创 FreeRTOS学习笔记-基于stm32(1)任务基础知识

我们使用的32板子是,又称。裸机有如下缺点:1、实时性差。只能一步一步执行任务,比如在一个while循环中,要想执行上一个任务,就必须把下面的任务执行完,循环一遍后才能执行这个任务;2、浪费资源。在程序delay延时的时候会进入空等待,此时CPU不执行其他代码;3、结构臃肿。实现的功能都放在无限循环中。但就可以解决这些问题。RTOS有以下特点:1、分而治之。实现的功能可以划分为多个任务;2、任务调度。在延时函数时,不会进入空等待,而是让CPU执行其他任务;3、抢占式。

2024-03-02 17:48:06 668

原创 STM32--低功耗模式详解

PDDS位用来区分停机还是待机模式。PDDS = 0,进入停机模式,PDDS = 1,进入待机模式;LPDS位用来控电压调节器。LPDS = 0,电压调节器开启,LPDS = 1,电压调节器进入低功耗;停机模式下,唤醒方式只能是外部中断,由于PVD、RTC闹钟、USB唤醒、ETH唤醒借道了外部中断,所以也可以唤醒;

2024-02-26 18:41:15 1066

原创 STM32--EXTI外部中断

相同的Pin不能同时触发中断:比如PA0和PB0不能同时使用;NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4为可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级;抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按照中断号排队;

2024-02-18 16:44:04 730

原创 stm32--笔记

(5)**VBAT:**当使用电池或其他电源连接到VBAT脚上时,当VDD 断电时,可以保存备份寄存器的内容和维持RTC的功能。如果应用中没有使用外部电池,VBAT引脚应接到VDD引脚上。(3)**VSS:**S=series 表示公共连接的意思,通常指电路公共接地端电压。(2)**VDD:**D=device 表示器件的意思, 即器件内部的工作电压;(1)**VCC:**C=circuit 表示电路的意思, 即接入电路的电压。(4)**VEE:**负电压供电;场效应管的源极(S)

2024-02-18 16:00:55 653

原创 STM32--RTC实时时钟(详解)

BKP本质上是RAM存储器,掉电丢失;TAMPER:在引脚产生上升沿或者下降沿的时候产生侵入事件;

2024-02-06 00:36:06 1762

原创 Unix时间戳详解

Unix时间戳(Unix timestamp)是UNIX操作系统中的一种时间表示方式,以自1970年1月1日00:00:00(格林威治时间)以来的秒数来表示时间。它通常以整数形式存在,表示从该起始时间点到当前时间点所经过的秒数。Unix时间戳的优势在于其简单性和一致性,可以在不同的编程语言和操作系统中使用。许多编程语言提供了函数或库来将Unix时间戳转换为易读的日期和时间格式,或将日期和时间格式转换为Unix时间戳。

2024-02-05 00:29:37 1737

原创 STM32--SPI通信协议(3)SPI通信外设

16位数据帧:最长见的是8位数据帧,也就是一次发送8个字节,而16位数据帧就是一次发送16个字节;时钟频率:外设时钟(APB2的PCLK是72MHz,APB1的PCLK是36MHz)/ 分频系数;SPI1挂载在APB2上,其他挂载在APB1上;iis:一种数字音频传输的协议(小容量与中容量产品上不支持iis协议);

2024-02-04 00:31:06 1107

原创 STM32--SPI通信协议(2)W25Q64简介

1、W25Qxx中的xx是不同的数字,表示了这个芯片不同的存储容量;2、存储器分为易失性与非易失性,主要区别是存储的数据是否是掉电不丢失:易失性存储器:SRAM、DRAM;非易失性存储器:E2PROM、Flash;

2024-02-03 01:07:51 809

原创 STM32--SPI通信协议(1)SPI基础知识总结

SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在微控制器和外围设备之间传输数据。SPI使用四根线进行通信,即主设备和从设备之间的主时钟线(SCLK)、数据输出线(MOSI)、数据输入线(MISO)和片选线(SS)。SPI协议可以实现高速数据传输和多设备通信,并且具有简单的硬件实现和低功耗特点,常用于与外围设备(如传感器、存储器、显示屏等)的通信。

2024-02-02 00:10:47 1080

原创 STM32--USART串口(3)数据包

在实际的工程中肯会有同时发送多种数据的情况,比如要不停的发送x、y、z分别对应三种不同的数据。xyzxyzxyz,但接收方可能是从中间某个地方开始接收的,这就导致数据错位。所以我们就需要将数据进行分割,打包成一个一个的数据包,方便接收方进行识别。数据包的格式可以自行定义,。

2024-02-01 00:11:50 476 1

原创 STM32--USART串口(2)串口外设

可配置数据位:不需要校验就是8位,需要校验就选9位;停止位:决定了帧的间隔;STM32F103C8T6USART:USART1挂载在APB2总线上,USART2和USART3挂载在APB1总线上;

2024-01-30 23:37:06 1595 1

原创 STM32--USART串口(1)串口协议

全双工:通信双方能够同时进行双向通信;半双工:通信双方能够进行双向通信,但不能同时通信;单工:只能从一个设备到另一个设备;同步:接收方可以在时钟信号的指引下进行采样;异步:需要规定好采样频率,还要加上帧头帧尾等进行采样位置对齐;单端信号:引脚的高低电平都是相对于GND的,所以单端信号通信的双方必须要共地差分信号:靠两个差分引脚的电压差来传输信号(可提高抗干扰特性,传输速度与距离很高)

2024-01-30 22:45:27 514 1

14年电赛风洞实验串口屏工程

14年电赛风洞实验串口屏工程

2024-04-21

基于 Python 的校园导航系统

这是基于 Python 的数据结构课设-校园导航系统

2024-03-29

电赛准备-基于stm32与串口屏的PID调参器

可以通过串口直接修改PID的值,从而达到快速调PID的目的。

2024-03-26

21年电赛送药小车数字识别-数字模板

这是21年电赛送药小车基于OpenMV的数字识别部分,多模板匹配的数字模板。详细代码见我博客:https://blog.csdn.net/m0_74800695/article/details/136824120?spm=1001.2014.3001.5502

2024-03-18

FreeRTOS学习文件

正点原子FreeRTOS的学习资料

2024-03-04

STM32贪吃蛇项目-库函数版本.zip

贪吃蛇项目的完整代码

2024-03-04

空空如也

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

TA关注的人

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