自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32---DMA

直接存储器存储DMA可以提供外设与存储器以及存储器与存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。12个独立可配置通道:DMA1(7个通道)、DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发STM32F103C8T6 DMA资源:DMA1(7个通道)只读存储器,是一种非易失性、掉电不丢失的存储器随机存储器,是一种易失性、掉电丢失的存储器0x0800开头的就是主闪存的数据注:ADC的扫描模式具有数据覆盖的缺点,所以需要DMA的配合;

2025-03-25 14:37:29 336

原创 STM32---FreeRTOS内存管理实验

【代码】STM32---FreeRTOS内存管理实验。

2025-03-18 15:26:25 405

原创 Tickless低功耗模式

一般的MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式(睡眠、待机、停止)FreeRTOS也提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应用开发。

2025-03-18 13:49:47 207

原创 STM32---FreeRTOS软件定时器

【代码】STM32---FreeRTOS软件定时器。

2025-03-18 10:59:13 1094

原创 STM32---FreeRTOS任务通知

main.c//设置系统中断优先级分组 4Key_Init();LED_Init();// 创建任务/******************************************************************任务配置****************************************************///任务优先级//任务堆栈大小//任务句柄//任务函数//任务优先级//任务堆栈大小//任务句柄//任务函数。

2025-03-18 08:25:24 522

原创 STM32---FreeRTOS事件标志组

用一个位,来表示事件是否发生一组事件标志位的集合,可以简单的理解时间标志组,就是一个整体。它的每一个位表示一个时间(高8位不算);每一个事件的含义,由用户自己决定,如:bit0表示按键是否按下,bit1表示是否接收到消息...(这些位的值为1:表示事件发生了;值为0,表示事件未发生)任意任务或中断都可以读写这些位;可以等待某一位成立,或者等待多位同时成立;虽然使用了 32 位无符号的数据类型变量来存储事件标志, 但其中的。

2025-03-14 16:19:10 1208

原创 STM32---FreeRTS队列集

一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集!用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让任务退出阻塞状态。

2025-03-14 14:22:24 351

原创 STM32---FreeRTOS信号量

二值信号量的本质是一个队列长度为1的队列,该对列只有空和满两种情况,这就是二值信号量;信号量通常用于互斥访问或任务同步,与互斥信号量比较类似,但是二值信号量有可能会导致优先级翻转问题,所以二值信号量更适用于同步!计数型信号量:计数型信号量相当于队列长度大于1的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建时确定的。优先级翻转:高优先级的任务反而慢执行,低优先级的任务反而优先执行;

2025-03-11 08:34:01 1226

原创 STM32---FreeRTOS消息队列

是任务到任务,任务到中断、中断到任务数据交流的一种机制(消息传递FreeRTOS基于队列,实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、递归互斥信号量,因此很有必要深入了解FreeRTOS的队列。(中断一关闭,就不会出现任务切换,以防多个任务同时操作队列)1.数据入队出队方式:先进先出2.数据传递方式:实际值3.多任务访问4. 出队、入队堵塞答:2、如果大家的优先级相同,那等待时间最久的任务会进入就绪态。

2025-03-10 10:23:12 1633

原创 STM32---FreeRTOS任务时间统计API函数

【代码】STM32---FreeRTOS任务时间统计API函数。

2025-03-07 14:03:26 481

原创 STM32---FreeRTOS任务相关API函数

*-------------------------------- FreeRTOS 定时器配置 --------------------------------*/// 释放 status_array 的内存。if (status_array == NULL) // 检查内存是否分配成功。两个函数很像,但是第一个函数的第一个参数是结构体指针,第二个函数的第一个参数是结构体;内部创建的2个任务:空闲任务和定时器任务,一共是5个任务。// 定时器任务堆栈大小。// 定时器任务优先级。

2025-03-06 11:13:25 969

原创 STM32---FreeRTOS时间片调度实验

同等优先级任务轮流地享有相同的CPU时间(可设置),叫时间片,在FreeRTOS中,一个时间片就等于SysTick中断周期;

2025-03-05 10:12:26 556

原创 STM32---FreeRTOS列表插入和删除实验

学会对FreeRTOS列表和列表项的操作函数使用,并观察运行结构和理论分析是否一致:将设计三个任务:start_task、task1、task2start_task:用来创建其他的2个任务task1:实现LED0每500ms闪烁一次,用来提示系统正在运行task2:调佣列表和列表项相关的API函数,并且通过串口输出相应的信息,进行观察。

2025-03-05 08:23:58 501

原创 STM32---FreeRTOS临界段与任务调度器

临界区:临界段代码也叫临界区,是指那些必须完整运行,不能被打断的代码。任务调度器:挂起任务调度器,不需要关闭中断。

2025-03-04 13:55:55 437

原创 STM32---FreeRTOS中断管理试验

学会使用FreeRTOS的中断管理创建两个定时器,一个优先级为4,另一个优先级为6;注意:系统所管理的优先级范围 :5~15现象:两个定时器每1s,打印一段字符串,当关中断时,停止打印,开中断时持续打印。实验设计:创建两个任务:start_task、task1start_task:用于创建task1任务task1:中断测试任务,任务中将调到用关中断和开中断函数来体现对中断的管理。

2025-03-04 11:53:07 666

原创 FreeRTOS系统---Delay死延迟函数(STM32标准库)

先取消“#include "stm32f10x_it.h"”与“FreeRTOSConfig.h”当中关于下面宏的注释:在“FreeRTOSConfig.h”添加下面的宏:delay.cdelay.h注:其中delay_us()和deay_xms()不会引起FreeRTOS任务切换。

2025-03-04 10:08:46 742

原创 ADC模数转换---STM32

ADC可以江引脚上连续变化的模拟电压转换为内存中的数字变量,建立模拟电路到数字电路的桥梁;12位逐次逼近型的ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源模拟看门狗自动检测输入电压范围STM32F103C8T6 ADC资源:ADC1、ADC2、10个外部输入通道HRTM030的温度和湿度都是模拟量;通过变换电路将湿敏电阻元件的阻抗值随相对湿度变化的曲线转变为线性电压输出VCC--->5V。

2024-12-11 08:00:00 749

原创 UART串口通讯---STM32

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,其通讯协议可分层为协议层和物理层。物理层规定通信协议中具有机械、电子功能的特性,从而确保原始数据在物理媒体的传播;协议层主要规定通讯逻辑,统一双方的数据打包、解包标准。通俗的讲物理层规定我们用嘴巴还是肢体交流,协议层规定我们用中文还是英文交流;

2024-12-10 09:26:44 1354

原创 TIM编码器接口---STM32

编码器接口可接受增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度。正交编码器:A--->PA6 B--->PA7。每个高级定时器和通用定时器都拥有1个编码器接口。两个输入引脚借用了输入捕获的通道1和通道2。程序现象:获取编码器速度。

2024-12-10 08:22:07 194

原创 TIM输入捕获---STM32

IC输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道可配置为PWMI模式,同事测量频率和占空比可配合主从触发模式。实现硬件全自动测量。

2024-12-07 08:00:00 721

原创 TIM输出比较---STM32

输出比较可以通过比较CNT与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形;每个高级定时器和通用定时器都拥有4个输出比较通道;高级定时器的前3个通道额外拥有死区生成和互补输出的功能;在惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机空速等领域控制原理:对于呼吸灯来说,是一个“亮起、熄灭、亮起”的过程,当“亮起、熄灭、亮起”足够快时,就会出现一个中间值:“微亮”;电机控制亦是如此。

2024-12-06 08:18:56 1240 2

原创 TIM定时器中断---STM32

定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断;16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大的59.65s的定时;不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能;根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种;

2024-12-06 08:17:12 576

原创 0.96寸OLED---STM32

有机发光二极管性能优异的新型显示屏,具有功耗低(相比LCD不需要背光源,每一个节点当度发光)、响应速度快、宽视角(自发光,从任何视角看都比较清晰)、轻薄柔韧(手机屏,手表屏)3~5.5VI2C/SPI128*64。

2024-12-05 08:15:23 502

原创 中断---TM32

中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后有返回原来的被暂停的位置继续运行;中断优先级:当有多个中断源同事申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先相应更加紧急的中断源;中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回;STM32具有68个可屏蔽中断,每一个中断具有16个可编程的优先等级;

2024-12-04 14:55:33 791

原创 STM32+FATFS+SD卡+RTC(生成.CSV格式文件)

实验目的:在SD卡上挂载文件系统,实时记录压力传感器采集到的数据;且在表格第一排记录采集时间;因为前面文章包含了除RTC之外的所有的代码,此文章只放RTC代码。

2024-09-13 09:31:36 1128 1

原创 SD卡挂载FatFs文件系统

实验目的:SD卡挂载FATFS文件系统,并生成.txt文件SD卡:16G;SPI读写模式;引脚定义:VCC:5VGND:GNDMISO:PA6MOSI:PA7SCK:PA5CS:PA4。

2024-09-12 13:09:33 850

原创 FatFs文件系统的移植---STM32(标准库)

本次移植工程是以W25Q128为列的,W25Q128的代码在我之前的文章就有,都是免费的,直接复制粘贴修改引脚就可以使用的;虽然宏里面有SD卡,但是并未实现SD卡的功能,需要的话可以私信,有工程源码,当然也是免费的。source里面是源码,把里面全部的文件复制添加到自己的工程;一般在自己的工程里面新建一个FATFS文件夹,把source里面的文件复制进来,然后添加到自己的工程里面,注意添加。函数都有注释,不一个一个修改了,直接上修改后的源码。的时候把ffcong.h也添加进去,方便后面修改,

2024-09-10 17:54:58 2178 4

原创 SPI---SD卡

SD卡为移动设备提供了安全的,大容量存储解决方法。它本身可以通过两种总线模式和MCU进行数据传输,一种是称为SD BUS的4位串行数据模式,另一种就是大家熟知的4线SPI Bus模式。一些廉价,低端的MCU,通过硬件(或软件)SPI就能和SD卡进行通信,实现大容量存储的要求,这也是SD卡的魅力所在。(1)卡体尺寸不同:TF卡偏小一点,SD卡大得多(TF卡称作:Micro SD card);(2)管脚定义不同:SD卡管脚比TF卡多的多;(3)TF卡插入卡套可以作为SD卡使用;反之不行;SDSC卡 < 2GB。

2024-09-10 10:53:36 2522 1

原创 操作系统---FreeRTOS(队列集)

队列只能传输同一种数据,不同的任务之间需要传输不同的数据类型的消息时那么就需要使用队列集。作用:用于对多个队列或者信号量进行监听,其中不管任何一个到来,都可以使任务退出阻塞状态。

2024-06-28 17:06:54 420

原创 操作系统---FreeRTOS(消息队列)

动态创建和静态创建的区别:队列所需要的内存空间由FreeRTOS从FreeRTOS管理的堆中分配,而静态创建需要用户自行分配内存。

2024-06-27 15:27:29 1356

原创 操作系统---FreeRTOS(信号量)

二值信号量本质上是队列长度为1的队列,该队列只有空和满的情况,这就是二值。二值信号量常用于互斥访问与任务同步,与互斥信号量类似,但是很可能造成优先级翻转问题,所以二值信号量更适用于任务的同步。优先级翻转:高优先级的任务因等待低优先级的任务而被阻塞的情况。计数型信号量相当于队列大于1的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候就确定的。

2024-06-26 09:53:42 1328

原创 SPI---FLASH(W25Q128)

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。

2024-06-20 10:02:36 2744

原创 操作系统---FreeRTOS(学习笔记八)

是一种数据结构,用来追踪FreeRTOS中的任务。(概念上和链表有点相似)存放在列表当中的项目。迷你列表项也是列表项,迷你列表项仅用于标记列表的末尾和挂载其他插入列表中的列表项,用户是找到不到迷你列表项的。列表相当于链表,列表项相当于节点 ,FreeRTOS中的列表相当于一个双向环形链表。列表项里面的地址并非连续的,是人为连接在一起的。列表项当中的数目是有后期添加的个数决定的,随时可以改变。在OS当中,任务的个数是不确定的,并且任务状态也是会随时发生改变的,所以非常适用于链表。

2024-06-04 09:46:40 430

原创 物联网---MQTT协议(原理)

是机器人对机器人(M2M)/物联网(IOT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。客户端——服务器架构的发布/订阅模式的消息传输协议。轻巧。开放、简单、规范易于实现。低宽带、高延迟、不可靠网络环境下的通信需求而设计的。

2024-05-31 14:35:39 509

原创 操作系统---FreeRTOS(学习笔记七)

临界区:临界段代码也叫临界区,是指那些必须完整运行,不能被打断的代码。任务调度器:挂起任务调度器,不需要关闭中断。

2024-05-29 11:16:01 488

原创 操作系统---FreeRTOS(学习笔记六)

ARM Cortex-M使用了8位宽的寄存器来配置中断的优先级等级,STM32只用了高四[7:4],所以STM32提供了最大16级的中断优先等级。STM32中断优先级可以分为抢占优先级和子优先级;抢占优先级高的中断可以打断正在执行但是抢占优先级等级比较低的中断;当;两个抢占优先级相同的中断,子优先级数值小的中断会优先执行;

2024-05-24 10:06:45 414 1

原创 STM32---FreeRTOS任务创建与删除实验

1.创建start任务;2.再start任务里面创建LED0、LED1、KEY三个任务;3.LED0函数功能为每500ms翻转一次;LED1函数功能为每500ms翻转一次;KEY函数功能为按下删除LED0任务;注:我的板子没有按键,所以没有实现按键功能。1.将configSUPPORT_STSTIC_ALLOCATION设置为1(无需设置,默认就是1);2.创建开始任务;3.编写任务函数;代码实现:main.cled.cled.h临界区作用:关闭中断(任务切换就是在中断中进行的);

2024-05-10 10:50:30 519 1

原创 STM32标准库---FreeRTOS操作系统移植

将FreeRTOS官方文件里面内核文件里面portable里面的MemMang里面的heap_4.c移植到自己的工程MiddlewaresFreeRTOS_PORT。注:FreeRTOS是软件层面的东西,protable文件夹里面的东西就是连接桥梁,连接硬件和软件的文件。port文件是软件与MCU硬件连接的桥梁,STM32不同系列的开发板在官方文件当中对应的位置也是不一样的。自己工程里面的FreeRTOS文件夹是全部复制官方文件中的FreeRTOS里面的Source文件内容。这里需要注意的是:头文件顺序。

2024-05-09 11:00:40 825

原创 操作系统---FreeRTOS(学习笔记二)

高优先级的任务,优先执行;高优先级的任务,不停止的话低优先级的任务无法执行;被抢占的任务会进入就绪态;

2024-05-07 16:01:10 352

原创 操作系统---RTOS(学习笔记一)

裸机开发:又称为前后台系统,前台系统指的是中断服务函数,后台系统指的是大循环,及应用程序。实时性差(轮流执行);delay(空等待,浪费资源);结构臃肿(实现的功能都是无限循环里面);操作系统:Real Time OS,实时操作系统,强调的实时性。其实是在多个任务之间调度和切换CPU的过程,造成多个CPU共同运行的假象;假的,都是假的,但是提高CPU利用率是真的,可以使牛无时无刻不在耕田,让你体验当资本家的快乐。分而治之(将需要实现的功能分为多个任务);

2024-05-07 14:40:38 366 1

空空如也

空空如也

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

TA关注的人

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