<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DD____YOU的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DD____YOU</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DD____YOU]]></copyright><item><title><![CDATA[FREERTOS14]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161645512</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161645512</guid><author>DD____YOU</author><pubDate>Wed, 03 Jun 2026 09:59:05 +0800</pubDate><description><![CDATA[链接: https://pan.baidu.com/s/1e2TC9e63XbOgH_EdnDQVWw?例如串口接收数据如果处理太慢，可能会丢数据，所以优先级通常应该比 LED 闪烁任务高。是低优先级任务，用来模拟不太着急的后台任务，例如状态打印、LED 心跳灯等。如果发现低优先级任务长期不运行，就要检查高优先级任务是否一直占用 CPU。如果高优先级任务一直不阻塞，那么低优先级任务可能长时间得不到运行机会。高优先级任务如果一直不阻塞，低优先级任务可能饿死。如果打印任务优先级太高，可能影响其他更重要任务。]]></description><category></category></item><item><title><![CDATA[FREERTOS13]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161613916</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161613916</guid><author>DD____YOU</author><pubDate>Tue, 02 Jun 2026 10:17:08 +0800</pubDate><description><![CDATA[pwd=0000 提取码: 0000。因为有些任务平时栈消耗不大，但在复杂格式化、通信处理、异常处理时会突然消耗更多栈。任务中的局部变量、函数调用、临时数据等都会占用任务自己的栈。任务栈太小可能导致程序卡死、HardFault、串口异常。任务栈太小时，任务运行过程中可能会写出自己的栈空间范围。串口打印任务建议给更大的栈，比如 256 Words。在 FreeRTOS 中，每个任务都有自己的栈空间。所以 FreeRTOS 项目中必须重视任务栈大小。如果这个数组写在任务函数里面，它会占用当前任务栈。]]></description><category></category></item><item><title><![CDATA[FREERTOS12]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161613898</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161613898</guid><author>DD____YOU</author><pubDate>Tue, 02 Jun 2026 10:16:34 +0800</pubDate><description><![CDATA[链接: https://pan.baidu.com/s/17W-e6_C76_arUrtXDDJoXw?如果中断中调用 FreeRTOS API，要注意中断优先级。等待通知时，任务进入 Blocked 状态，不占用 CPU。调用 FreeRTOS API 的中断优先级不能设置得太高。不是所有 FreeRTOS API 都能在中断中调用。因为 STM32 中优先级数字越小，中断优先级越高。如果 20 ms 后仍然是低电平，说明按键确实按下。这个任务负责等待按键中断通知，并通过串口打印。]]></description><category></category></item><item><title><![CDATA[FREERTOS11]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161584003</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161584003</guid><author>DD____YOU</author><pubDate>Mon, 01 Jun 2026 10:11:48 +0800</pubDate><description><![CDATA[任务通知是一种轻量级的任务间通信机制，每个任务本身就自带任务通知标志位，不需要额外创建信号量或事件对象。本节实验中， 每隔 1000 ms 发送一次任务通知， 等待通知并通过串口打印。notifyTask 发送通知后，receiveTask 被唤醒并执行打印。等待通知时任务可以进入阻塞状态，不占 CPU。如果要多个任务共享多个事件，使用事件标志组。任务通知是直接通知某个任务的轻量机制。每个任务自带通知标志位，不需额外对象。任务通知比信号量、事件标志组更轻量。适合一个任务通知另一个固定任务。]]></description><category></category></item><item><title><![CDATA[FREERTOS10]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161583960</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161583960</guid><author>DD____YOU</author><pubDate>Mon, 01 Jun 2026 10:10:31 +0800</pubDate><description><![CDATA[链接: https://pan.baidu.com/s/1xDWMk00twH7FlRQeyFgwhQ?本节实验中，软件定时器每隔 1000 ms 触发一次，然后设置事件标志，最后由任务通过串口打印。软件定时器回调函数是在 FreeRTOS 的定时器服务任务中执行的。软件定时器可以在指定时间到达后，自动执行一个回调函数。CubeMX 创建定时器后，通常还需要手动启动。软件定时器可以是单次定时器，也可以是周期定时器。这里的  是定时周期，单位是系统 tick。软件定时器可以在指定时间到达后执行回调函数。]]></description><category></category></item><item><title><![CDATA[FREERTOS9]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161571397</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161571397</guid><author>DD____YOU</author><pubDate>Sun, 31 May 2026 20:31:25 +0800</pubDate><description><![CDATA[链接： https://pan.baidu.com/s/1pWPtTUXBdGpKLVpl02Lu4g?FREERTOS学习笔记九：事件标志组 Event Flags 总结。事件标志组 Event Flags 用来管理多个事件。如果前面已经配置过 USART1，可以继续使用。信号量适合单个事件，事件标志组适合多个事件。表示按位与，用来判断某个事件位是否存在。的作用是等待事件位，并通过串口打印。事件标志组最重要的就是这两个等待模式。事件标志组本质上是一组二进制标志位。每一个 bit 都可以表示一个事件。]]></description><category></category></item><item><title><![CDATA[FREERTOS8]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161571365</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161571365</guid><author>DD____YOU</author><pubDate>Sun, 31 May 2026 20:28:06 +0800</pubDate><description><![CDATA[如果 Task1 正在打印时，Task2 也想打印，那么 Task2 会先等待。它保证 Task1 使用 UART 时，其他任务不能同时使用 UART。因为本节  会被多个任务调用，所以调用它之前需要先获取互斥锁。等 Task1 释放锁以后，Task2 才能继续打印。不要让 Task1 获取锁，却让 Task2 释放锁。锁保护范围不要太大，只保护真正访问共享资源的代码。本节不使用递归互斥锁，只使用普通 Mutex。多个任务同时访问共享资源，可能会造成数据混乱。互斥锁的基本结构是：获取锁、访问资源、释放锁。]]></description><category></category></item><item><title><![CDATA[FREERTOS7]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161546090</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161546090</guid><author>DD____YOU</author><pubDate>Sat, 30 May 2026 17:27:11 +0800</pubDate><description><![CDATA[链接: https://pan.baidu.com/s/1eP67ZG8M8RlacUjHhigV5Q?如果当前计数值是 0，任务再去获取信号量，就会进入阻塞状态等待。如果当前计数值已经达到最大值，再释放信号量，释放操作就可能失败。如果计数值为 0，获取任务会进入 Blocked 状态等待。如果当前计数值等于 0， 进入 Blocked 状态等待。如果当前计数值大于 0，就获取成功，计数值减 1。它不是只有 0 和 1，而是可以有多个计数值。理解计数信号量不会无限累加，有最大计数值。]]></description><category></category></item><item><title><![CDATA[FREERTOS6]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161546069</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161546069</guid><author>DD____YOU</author><pubDate>Sat, 30 May 2026 17:25:39 +0800</pubDate><description><![CDATA[如果没有信号量，等待任务会进入 Blocked 状态，不会一直占用 CPU。如果 CubeMX 生成的信号量初始值本来就是 ，这句代码影响不大。如果初始值是 ，那么  一开始就能获取到信号量，并立刻打印一次。二值信号量主要用于任务同步，也就是通知某个事件发生了。二值信号量常用于任务通知任务，也常用于中断通知任务。一个任务可以释放信号量，另一个任务可以等待信号量。如果信号量已经是 ，再次释放它，结果仍然是。如果需要统计事件发生次数，可以使用计数信号量。本节先用任务释放信号量，是为了更容易理解。]]></description><category></category></item><item><title><![CDATA[FREERTOS5]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161428557</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161428557</guid><author>DD____YOU</author><pubDate>Tue, 26 May 2026 17:57:18 +0800</pubDate><description><![CDATA[队列可以简单理解成一个“数据缓冲区”。一个任务可以往队列里面放数据，另一个任务可以从队列里面取数据。发送任务 ---> 队列 ---> 接收任务任务1：我产生了一个数据，先放到队列里。任务2：我需要数据时，就从队列里取。先进先出先放进去的数据，会先被取出来。123123这一节主要学习了 FreeRTOS 中的队列 Queue。队列用于任务之间传递数据。队列是先进先出的数据缓冲区。一个任务可以使用发送数据。另一个任务可以使用接收数据。]]></description><category></category></item><item><title><![CDATA[FREERTOS4]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161413005</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161413005</guid><author>DD____YOU</author><pubDate>Tue, 26 May 2026 09:45:32 +0800</pubDate><description><![CDATA[所以这一节主要学习如何在 CubeMX 生成的 FreeRTOS 工程中添加串口，并在任务中通过串口打印信息。前面的实验现象有些是通过 LED 观察，有些是通过 Keil 的 Watch 窗口观察变量。后面如果程序复杂了，可以再使用中断发送、DMA 发送，或者专门创建一个串口打印任务。当前任务进入阻塞态后，FreeRTOS 调度器会去运行其他可以运行的任务。如果它的优先级比较高，就可能导致低优先级任务长时间得不到运行机会。如果高优先级任务一直不阻塞，低优先级任务可能长时间运行不到。]]></description><category></category></item><item><title><![CDATA[FREERTOS3]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161397348</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161397348</guid><author>DD____YOU</author><pubDate>Mon, 25 May 2026 17:33:41 +0800</pubDate><description><![CDATA[如果使用的是常见 STM32F103C8T6 Blue Pill 板载 LED，板载可控 LED 通常不是 PA0 或 PA1，而是 PC13。前面讲过，如果两个任务优先级不同，FreeRTOS 会优先运行 Ready 状态中优先级更高的任务。这一节需要两个任务，所以要在 CubeMX 中再添加一个任务，或者在 里面手动添加第二个任务。建议初学时优先用 CubeMX 添加任务，因为它会自动生成任务句柄、任务属性和任务创建代码。但是这个实验里面，任务交替运行的主要原因不是时间片轮转，而是。]]></description><category></category></item><item><title><![CDATA[FREERTOS笔记2]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161346326</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161346326</guid><author>DD____YOU</author><pubDate>Sat, 23 May 2026 20:06:19 +0800</pubDate><description><![CDATA[但是在 FreeRTOS 里面，程序不是简单地从上往下执行，而是由调度器根据任务的状态和优先级来决定哪个任务可以运行。FreeRTOS 的调度规则不是“谁写在前面谁先一直执行”，而是“谁准备好了，并且优先级最高，谁就运行”。如果这个时候任务1也处于 Ready 状态，那么还是任务1优先运行，因为任务1优先级更高。如果任务1的优先级仍然高于任务2，那么任务2大概率不会再正常运行。FreeRTOS 总是运行 Ready 状态中优先级最高的任务。因为任务1的优先级更高，所以 FreeRTOS 会先运行任务1。]]></description><category></category></item><item><title><![CDATA[FreeRTOS 学习笔记一]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161346231</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161346231</guid><author>DD____YOU</author><pubDate>Sat, 23 May 2026 19:54:54 +0800</pubDate><description><![CDATA[FreeRTOS 可以理解为一个运行在单片机上的。它本身并不负责帮我们完成具体业务逻辑，而是负责管理多个任务，让这些任务按照一定规则使用 CPU。决定当前应该运行哪个任务。当多个任务都可以运行时，优先运行优先级更高的任务。当任务主动延时或等待资源时，调度器会切换到其他可以运行的任务。当多个任务都要访问同一个外设，例如 GPIO、UART、SPI、I2C 时，可以通过信号量、互斥锁等机制避免冲突。这样可以防止多个任务同时操作同一个资源造成数据混乱。]]></description><category></category></item><item><title><![CDATA[逆变式直流稳压电源电路]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/161025243</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/161025243</guid><author>DD____YOU</author><pubDate>Tue, 12 May 2026 20:28:30 +0800</pubDate><description><![CDATA[本电路只是仿真的结果，如果运用到实际还需要实际的数据作为支撑，本文章只作为参考，如果由任何的错误请及时指出值，下面的电压表也是一个固定数值，最终是接近-12V的，因为仿真由一定的误差，这个是没有办法的。本电路只是仿真的结果，如果运用到实际还需要实际的数据作为支撑，本文章只作为参考，如果由任何的错误请及时指出。]]></description><category></category></item><item><title><![CDATA[倍压器直流稳压电源电路]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/160825488</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/160825488</guid><author>DD____YOU</author><pubDate>Wed, 06 May 2026 15:06:13 +0800</pubDate><description><![CDATA[NE555是精密计时电路，能够实现准确的延时时间和振荡引脚介绍：引脚1：GND，电路的公共接地端，连接电源的负极引脚2：TR，Trigger触发，当这个引脚电压下降到VCC的1/3以下，芯片会启动定时过程，让输出引脚3变为高电平。（注意：有的手册写的是1/2的CONT，而CONT是VCC的1/2，所以是对的，只是表述不一样）引脚3：Q，输出，Output。芯片信号的输出端，可以输出高电平VCC和低电平GND，能够驱动LED、继电器或其它的芯片。]]></description><category></category></item><item><title><![CDATA[基于LM317的可调式单电源直流稳压电路设计与Multisim仿真]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/160531352</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/160531352</guid><author>DD____YOU</author><pubDate>Sun, 26 Apr 2026 18:35:47 +0800</pubDate><description><![CDATA[本文基于 LM317 设计了一个可调式单电源直流稳压电路，并使用 Multisim 对其进行了仿真。该电路首先通过桥式整流将 15 V 交流电转换为单向脉动直流电，再通过电容滤波降低纹波，最后利用 LM317 实现可调稳压输出。仿真结果表明，在当前输入条件下，输出电压可以在约 1.5 V 到 17 V 范围内调节。通过本次设计，可以较清楚地理解交流电整流、滤波和线性稳压的基本过程。该电路适合作为学习型直流稳压电源实验电路，但如果用于实际供电，还需要进一步考虑散热、负载能力、保护措施和器件选型裕量。]]></description><category></category></item><item><title><![CDATA[固定式单电源直流稳压电路设计]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/160459956</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/160459956</guid><author>DD____YOU</author><pubDate>Fri, 24 Apr 2026 09:37:21 +0800</pubDate><description><![CDATA[最近在学习直流稳压电源相关内容，我用Multisim搭了一个简单的固定式单电源直流稳压电路，并做了基础仿真。桥式整流电容滤波三端稳压输出本文主要从电路原理、波形变化、器件作用以及工程上需要注意的问题几个方面，对这个电路做一个完整梳理。说明：本文内容以仿真分析为主，暂未进行实物制作与测试。如果文中有不严谨之处，欢迎大家交流指正。]]></description><category></category></item><item><title><![CDATA[电子元器件-电阻器篇]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/160375001</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/160375001</guid><author>DD____YOU</author><pubDate>Tue, 21 Apr 2026 16:07:47 +0800</pubDate><description><![CDATA[电阻器通常也称为电阻，是一个为电流提供通路的电子器件，也可以定义为：每单位电流在导体上所引起的电压。（电阻没有正负极之分）电阻（R）= 电压（U）/ 电流（I）]]></description><category></category></item><item><title><![CDATA[ESP8266 连接 OneNET 云平台实战：AT 固件 + MQTT 接入完整流程]]></title><link>https://blog.youkuaiyun.com/DD____YOU/article/details/160080399</link><guid>https://blog.youkuaiyun.com/DD____YOU/article/details/160080399</guid><author>DD____YOU</author><pubDate>Sun, 12 Apr 2026 12:32:02 +0800</pubDate><description><![CDATA[前段时间我做了一个简单的物联网小项目，核心思路就是：让 ESP8266 作为 Wi-Fi 模块，直接通过 MQTT 接入 OneNET 云平台，实现设备上线、订阅平台指令以及上报属性数据。原始过程踩了不少坑，所以这篇文章我把整个流程重新整理了一遍，尽量写成一篇真正能跟着做下来的实战教程。对于刚入门的同学来说，不需要先写单片机代码，只要先把 ESP8266 的联网链路跑通，就已经迈出很关键的一步了。刷好可用的 AT 固件用串口指令先连上 Wi-Fi配置 MQTT 参数接入 OneNET。]]></description><category></category></item></channel></rss>