自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式|RTOS教学——FreeRTOS基础5:互斥锁

摘要:互斥锁(Mutex)是FreeRTOS中用于保护共享资源的同步机制,确保同一时间仅一个任务访问关键资源(如全局变量、硬件外设等)。其核心特性包括独占性、优先级继承(避免高优先级任务被阻塞)和所有权(仅持有者能释放)。互斥锁通过xSemaphoreCreateMutex()创建,使用xSemaphoreTake()获取和xSemaphoreGive()释放。与二进制信号量不同,互斥锁专为资源竞争设计,支持优先级继承。使用时需避免长期持有锁、防止死锁,且不能在中断中使用。正确使用互斥锁可确保实时系统的可靠

2025-09-09 20:54:33 625

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理6:通信协议

通信协议

2025-09-04 02:47:17 109

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理5:硬件

1.PN结2.二极管3.稳压二极管。

2025-09-04 02:12:01 396

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理4:RTOS

实时操作系统

2025-09-04 02:07:29 238

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理3:STM32

stm32

2025-09-04 02:06:57 606

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理2:数据结构

数据结构

2025-09-04 02:06:15 393

原创 嵌入式面试|MCU+RTOS技术栈——面试八股文整理1:C语言

C语言

2025-09-04 02:05:14 339

原创 嵌入式|RTOS教学——FreeRTOS基础4:信号量

信号量是 RTOS 中实现任务协作与资源控制的 “轻量级工具”,通过简单的计数机制,解决了多任务环境下的同步、互斥和限流问题。二进制信号量:“0 或 1” 的开关,用于事件通知;计数信号量:“0 到 N” 的计数器,用于资源管理。结合具体场景选择合适的信号量类型,并注意避免死锁和中断使用禁忌,就能充分发挥其作用。

2025-09-03 22:49:50 902

原创 嵌入式|RTOS教学——FreeRTOS基础3:消息队列

摘 要:消息队列是嵌入式实时操作系统中的核心通信机制,用于实现任务间安全、异步的数据传递。其核心作用包括异步通信、数据缓冲、任务解耦和优先级支持。消息队列通过FIFO缓冲区存储数据,采用拷贝传递方式确保安全。使用需注意避免传递大消息、合理配置阻塞时间,中断发送需用专用接口。典型应用于传感器数据传递、中断与任务通信等场景,能有效提升系统实时性和稳定性。建议通过FreeRTOS等系统的实际例程逐步掌握消息队列的使用方法。(150字)

2025-09-03 22:46:25 596

原创 嵌入式|RTOS教学——FreeRTOS基础2:任务调度

任务调度是 RTOS 的 “心脏”,其核心价值在于:在单 CPU 环境下,通过合理的调度算法,让多个任务 “看似同时运行”,并保证关键任务的实时性。任务状态如何转换(运行→就绪→阻塞);调度算法如何选择下一个任务(抢占式、时间片轮转);任务切换的底层机制(上下文保存与恢复)。

2025-09-03 22:20:29 744

原创 嵌入式|RTOS教学——FreeRTOS基础1:准备工作

学习 FreeRTOS(实时操作系统)需要结合和,尤其要理解 “实时” 的核心逻辑(任务调度、资源管理)。在开始前,需具备基础能力并搭建好开发环境,避免后续因工具问题卡壳。

2025-09-03 22:04:27 789

原创 程序设计|C语言教学——C语言数据结构基础3:树与二叉树(非线性结构)

二叉树是树的一种特殊形式,它的每个节点最多有两个子节点,分别称为左子节点和右子节点。树是层级结构的非线性数据结构,用于表示具有 “一对多” 关系的数据。二叉树是每个节点最多有两个子节点的特殊树,因结构简单、操作高效而被广泛应用。二叉树的遍历是处理树结构的基础,不同遍历方式适用于不同场景(如中序遍历可用于 BST 的排序输出)。

2025-09-02 15:17:48 429

原创 程序设计|C语言教学——C语言数据结构基础2:栈与队列(受限的线性表)

栈和队列是特殊的线性表,操作受限制(只允许在一端或两端操作)。

2025-09-02 14:27:13 785

原创 程序设计|C语言教学——C语言数据结构基础1:链表

本文系统介绍了C语言数据结构的基础知识,包括结构体和指针等核心概念,以及线性表的两种实现形式。重点讲解了结构体的定义与使用、动态内存管理(malloc/free)及内存泄漏问题,详细对比了顺序表(数组实现)和链表(指针实现)的特性与操作方式。顺序表适合随机访问但插入删除效率低,链表则相反。文章提供了完整的代码示例,涵盖初始化、插入、遍历等基本操作,并强调内存管理的重要性。

2025-09-02 02:25:20 501

原创 程序设计|C语言教学——C语言基础4:进阶

无参宏:定义常量或代码片段,编译时直接替换(无类型检查)。#define PI 3.1415926 // 定义常量a : b) // 定义简单逻辑(注意括号,避免运算优先级问题)注意:宏替换是 “文本替换”,可能导致副作用,例如会导致a或b多自增一次。带参宏与函数的区别特性带参宏函数执行时机编译前替换运行时调用开销无调用开销(代码膨胀)有栈帧开销类型检查无有返回值无(替换结果直接使用)有明确返回值类型结构体(struct:组合不同类型数据,用于描述复杂对象(如学生、坐标)。

2025-08-16 17:35:23 622

原创 程序设计|C语言教学——C语言基础3:函数、数组、指针

返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...);函数的定义格式:返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...) {// 函数体return 返回值;

2025-08-16 16:33:26 140

原创 程序设计|C语言教学——C语言基础2:计算与控制语句

上一节我们知道了如何输出一个计算的结果,那么新问题是,如何才能在程序运行时输入一个数字,然后计算输出结果?那就需要有三件事情,第一我们需要有个地方存放我们输入的数字,第二,我们需要一个办法把数据输入进去。第三,我们要能够把存好的数据参与运算。printf("请输入金额:");printf("找零%d元\n",change);我们可以在DEV-C++中编译运行看一下。然后我们随意输入一个值30并回车,即可得到结果70。也就是我们数字的输入和输出一样,都是在我们程序运行的终端窗口里面的。

2025-08-16 16:21:54 773

原创 iRMB反向残差移动块代码和解析

【代码】iRMB反向残差移动块代码和解析。

2025-01-23 00:52:12 179

原创 YOLOv11代码

【代码】YOLOv11代码。

2024-12-31 08:49:55 449

原创 细说深度学习训练集、验证集、测试集(为什么有的论文的数据集只有训练集和验证集而无测试集)

为什么有的论文的数据集只有训练集和验证集而无测试集

2024-12-31 00:25:06 12029 4

原创 胎教版超详解YOLOv8的环境搭建流程与模型训练

yolov8

2024-12-09 13:14:51 1164

原创 关于串口数据处理(字符转换为十进制数值)

关于串口数据处理(字符转换为十进制数值)

2024-10-28 14:49:06 605

转载 hex转bin方法

hex文件格式剖析,以及hex与bin文件互相转换_hex转bin-CSDN博客

2024-05-24 12:52:00 153

原创 嵌入式BSP介绍

BSP是板级支持包(board support package),是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。

2024-05-22 15:40:12 1422

原创 程序设计|C语言教学——C语言基础1:C语言的引入和入门

C语言的第一个版本叫“K&R the C”,在这之后,1989年发布了ANSI C,1990出现了C89,在这之后C的标准经过了几次更新,我们使用的版本是C99,当代几乎所有的C语言编译器都支持C99。编程语言本身不存在解释和编译之分,只是传统和习惯的问题,某种语言习惯用解释或编译来执行。还有一个问题就是,我们在输入标点符号的时候一定要处于英语输入法,如果是中文输入法的话,同样的标点符号有可能就无法识别。在第三版的Unix上第一次出现了C语言的编译器,而第四版的Unix则是由C语言编写的。

2024-04-17 23:01:19 493

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记16:蓝桥杯编程手册

注意:RTC_TimeTypeDef rtc_time可以不用背,直接仿照MX_RTC_Init(void)里面的第一第二行就行了,定义的这个结构体就是HAL_RTC_GetTime()的第二个变量。8.解决LCD和LED冲突问题并测试。设置数字量:HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,1365)输出:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8 | GPIO_PIN_9,GPIO_PIN_SET)

2024-04-09 22:03:46 1778

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

RTC是集成在STM32G4内部的一个模块,我们通过对寄存器的一些配置和读取就可以让他工作在实时时钟的计时模式。

2024-04-08 16:47:51 1659

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记15:PWM输出

上节课讲解了PWM捕获,这节课讲解一下PWM的输出,也就是用STM32进行编程,让在特定的管脚上产生PWM信号,这个信号的占空比和频率是可调节的。我们知道开发板上有两个排针:这些排针上对应的是相应的管脚,其中PA1-7都是可以用作PWM输出的(当然也可以用作捕获),不同管脚对应TIM的不同通道,只需要在CubeMX中配置引脚就可以看到对应的通道了。上一节我们PWM捕获也用到TIM,这里我们PWM输出的时候就不要用相同的TIM。

2024-03-30 22:03:19 2623 1

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记14:PWM捕获

这节讲解一下PWM捕获的基础知识。PWM捕获是指我们的单片机可以测量输入到它管脚上的方波的频率或者占空比,捕获就是说我们可以捕捉外部方波的信息。这就是我们这节要学习的内容。

2024-03-30 13:45:06 1791 1

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

DAC是将数字量转化成模拟量的器件,我们可以通过编程来实现输出某个特定的电压值,也就是模拟量。STM32G4内部集成了一个DAC模块,我们通过对STM32的编程就可以实现在它的特定的管脚上输出一个特定的电压,当然这个电压是可以通过我们的程序进行变化的,比如我们可以让他输出一个三角波或者正弦波都是可以的,只要在0-3.3V的范围之内就可以。当然,DAC输出也会受限于内部DAC器件的位数和精度。这一节的重点在于要知道DAC的接口PA4、PA5,以及它是12位的右对齐,知道要配置外部引脚输出,还要会写。

2024-03-27 14:09:22 1878

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

数字电位器MCP4017本质是一个IC器件,也就是说它是一个集成芯片,而板子上的蓝色旋转电位器R37、R38本质是一个电阻。数字电位器本质是一个芯片,但是内部有一个电阻网络,通过很多模拟开关来给电阻网络切换不同的阻值,我们是通过之前介绍过的I2C总线来给芯片发送数据,告诉芯片我要打开哪些模拟开关,从而控制它的阻值。

2024-03-26 21:55:28 2180 1

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记10:USART串口通讯

今天讲解一下STM32G4的串口通讯模块USART,即通用同步异步收发器。相比与UART异步收发器,USART是可以同步通讯的,即接收端和发送端共用一个时钟,是有一个时钟线的。但是我们比赛和蓝桥杯板子上只用到了异步收发,所以我们只能把USART设置成Asynchronous(只需要用到两根线,收和发)。本节讲了串口通信USART的内容,因为我们没有接时钟线,所以只有异步通信也就是UART的内容。首先了解了一下通信的基本原理,需要了解硬件电路,以及数据收发的时序图,还有波特率的概念。

2024-03-18 22:37:25 2532 3

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记09:EEPROM

上一节我们学习了LCD转换,这节课学习一下EEPROM。学习EEPROM芯片之前要先学习一下它所使用的IIC协议,它通过这个协议和单片机进行通讯。一、IIC协议IIC是一个总线协议,它可以用于主器件与从器件之间交换数据使用。主器件就是我们所用的单片机了。IIC协议需要用到两根线,一根数据线,一根时钟线,不同于单总线协议只有一个I/O口。所以IIC可以提高通讯速率。IIC协议是一个通用的协议,有很多芯片都是用这个协议进行通讯的,EEPROM就是其中之一。

2024-03-08 17:23:16 2550 1

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记08:LCD液晶屏

上一节我们学习了ADC模数转换,这节课学习一下LCD液晶屏的显示模块。我们板子正中央就是一个全彩的LCD显示屏,上面也可以显示一些英文字符和数字,其实屏幕本身也可以显示一些图案或者中文字符的,但是比赛中是不会要求的,因为比赛的例程中没有提供中文字符的编码,所以比赛一般只会要求显示背景色,英文字符的颜色等。一、电路原理​LCD的分辨率是320*240,一行最多显示20个字符,总共10行,比赛时提供HAL_LCD例程,相关的IO已经帮我们初始化完成。

2024-03-08 11:58:00 1408 1

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记07:ADC模数转换

上一节我们学习了GPIO的按键输入并设计了一个利用定时器每10ms扫描一次的三行按键法的程序,这一节我们继续学习ADC模数转换的内容。关于ADC模数转换器,它的主要功能就是把一个模拟量变成数字量。数字当然也可以转化成我们常见的十进制数,这样我们更容易能读出它的值是多少。一、电路原理我们来看一下ADC的电路原理,首先单片机用到的管脚是PB15和PB12这两个管脚,他们是可以作为ADC的输入口使用的,当然我们也可以把他们配置成普通的GPIO,但是比赛的时候一般是把这两个管脚作为ADC的口来使用。

2024-03-08 10:19:13 2101 4

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记06:按键输入

上一节我们讲了STM32G4的Systick定时器,并且考虑到程序调度重新设计了LED灯循环闪烁的程序,可以不占用资源的情况下实现延时功能。这一节我们讲一下GPIO输入模块———按键功能。一、GPIO输入在学习独立按键之前,我们必须先了解一下GPIO的输入模式,了解一下GPIO输入的内部框图是怎么构成的,只有了解了内部构成才能更清晰地认识到GPIO输入该怎么配置,在某种配置下有什么作用。​。

2024-03-07 22:28:08 1877 6

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记05:Systick滴答定时器

上一节我们讲了比赛时程序设计的流程,以及LED灯模块的设计,这一节我们学习一下Systick系统滴答定时器的一些功能。我们主要学习系统滴答定时是什么东西,有什么作用, 以及如何使用它来实现一些我们想要的功能,对于它的内部构造和原理就不在范围之内了。本节的主要内容是将Systick用于程序调度的方法,一定要熟练掌握。本节的内容以后在实时操作系统RTOS中很重要。下节课将学习KEY按键输入的内容。

2024-03-07 15:54:33 2109

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记04:从零开始创建工程模板并开始点灯

上一节讲了时钟的配置并且生成了一个没有用的工程文件(里面可以看时钟配置的代码),这一节我们将从零开始新建一个带有GPIO的文件,能够实现具体的功能——LED灯的控制。并且在其中可以学习GPIO的相关知识,以及需要用到的函数,并自己进行流水灯的编程。再将LED模块的原理之前,我们必须先了解GPIO的相关知识,因为LED灯模块本质上就是GPIO的输出。一、GPIO输出模式打开参考手册351页可以看到GPIO的定义,我们可知GPIO输出模式可以配置成推挽模式或者开漏模式。

2024-03-06 23:22:44 2027 3

原创 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记03:G4时钟结构

上一篇讲了开发环境的安装,这一篇讲一下STM32G4的时钟结构。时钟是STM32的很重要的内容,时钟主要就是用来为STM32提供一个工作频率,比如我们的板子就是配置的80MHz的主频,如果加法运算需要四个时钟周期(微机原理的内容),那么4/80M 秒就能完成这个工作。所以我们可以理解为80MHz就是为系统提供的一个时间基准,决定了它运行的速度。G4的时钟结构是比较复杂的,因为它可以给不同的外设配置不同的时钟频率,比如主频80,定时器可以设置成40,等等。

2024-03-05 14:46:31 2206 3

原创 机器人学|手机玻璃加工全自动化——AGV+机器人+视觉解决方案(含双目三维视觉SLAM建图、MATLAB的AGV路径规划导航避障、六轴机械手臂建模与路径规划仿真,附带源代码)

目标:某企业为3C部件精密加工企业,其加工的零件为手机玻璃,要求加工精度为±0.01mm,目前为人工运输至加工中心加工,由人工采用千分表在大理石平台上逐个测量实现。企业为减少人工成本,提高生产效率,要求采用自动化生产线方式实现。试调研国内外移动操作机器人现状,并作出自动化解决方案,列出主要部件BOM清单,并列出AGV+机器人+视觉形成的解决方案,列出技术点,并尝试计算采用自动化方案与采用人工方案相比,何时收回自动化生产线改造成本。

2024-01-15 19:56:49 1972

嵌入式-蓝桥杯STM32G431(HAL库开发)-CT117E学习笔记09:EEPROM

嵌入式-蓝桥杯STM32G431(HAL库开发)-CT117E学习笔记09:EEPROM

2024-03-08

双目三维视觉SLAM建图、MATLAB的AGV路径规划导航避障、六轴机械手臂建模与路径规划仿真

双目三维视觉SLAM建图、MATLAB的AGV路径规划导航避障、六轴机械手臂建模与路径规划仿真

2024-01-15

蓝桥杯USB转串口驱动

蓝桥杯USB转串口驱动

2024-01-12

我的科研学习路线图(深度学习、ROS、嵌入式)

我的科研学习路线图(深度学习、ROS、嵌入式)

2024-01-11

空空如也

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

TA关注的人

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