<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dzdesigned的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dzdesigned</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dzdesigned]]></copyright><item><title><![CDATA[stm32串口标志与中断]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/167269657</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/167269657</guid><author>dzdesigned</author><pubDate>Thu, 08 Oct 2026 11:25:12 +0800</pubDate><description><![CDATA[当接收线（RX）在  接收完数据后，持续空闲超过一个字节的传输时间  没有新数据进来时，IDLE 标志被置位。每收到一个完整字节，硬件就会把 RXNE 置 1，触发中断。当 TXE 为 1（缓冲区空）并且最后一个字节的停止位也发完了，TC 才会置位。2.   IDLE 中断  ：当总线静默一个字符时间后触发，此时软件缓冲区里已经攒好了完整的一帧数据，可以交给协议解析器处理了。注意  ：清除 IDLE 标志需要特殊顺序：  先读 USART_SR，再读 USART_DR  ，否则可能异常。]]></description><category></category></item><item><title><![CDATA[C语言指定初始化器用法解析]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/155024435</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/155024435</guid><author>dzdesigned</author><pubDate>Wed, 19 Nov 2025 14:14:02 +0800</pubDate><description><![CDATA[C99标准引入的指定初始化器（Designated Initializers），是一种更清晰、更安全的结构体初始化方式。{ .led_gpio_pin = LED0_GPIO_PIN },  // 明确指定成员，顺序无关。{ 0, LED0_GPIO_PIN },  // 必须记住成员顺序。- `.led_gpio_pin` 表示要初始化的具体成员名称。- 其他未指定的成员会自动初始化为0（对于静态存储期的变量）// 初始化多个成员（顺序任意）// 只初始化部分成员。// 数组的多个元素。]]></description><category></category></item><item><title><![CDATA[Vue Router原理及SPA页面刷新解析]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/151149296</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/151149296</guid><author>dzdesigned</author><pubDate>Wed, 03 Sep 2025 14:45:49 +0800</pubDate><description><![CDATA[动态渲染：最后，也是最重要的一步，Vue Router会告诉Vue：“嘿，URL变了，现在请把`<router-view>`这个占位符里面的内容，从之前的`Home.vue`切换成新的`About.vue`组件。原理：浏览器发现`#`后面的部分（hash）变化时，**不会向服务器发起请求**，但会触发`hashchange`事件。匹配组件：Vue Router根据新的URL，去检查你预先配置的路由表（`routes`数组），找出这个URL对应应该显示哪个Vue组件（比如`About.vue`）。]]></description><category></category></item><item><title><![CDATA[FreeRTOS 中队列的阻塞态]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/150770477</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/150770477</guid><author>dzdesigned</author><pubDate>Mon, 25 Aug 2025 15:17:53 +0800</pubDate><description><![CDATA[相反，如果你使用 `portMAX_DELAY` 而是用 `0` （`pdMS_TO_TICKS(0)`），即非阻塞模式，并且用一个 `while(1)` 循环不停地去查询队列，那才会导致高优先级任务霸占CPU，使其他任务被饿死。8.  因为任务A的优先级最高，调度器会立即抢占当前正在运行的低优先级任务（例如任务B或C），让任务A恢复运行。之后任务C也有机会运行（只要没有比它优先级更高的任务处于就绪态）。4.  调度器发现任务A阻塞了，于是从就绪列表中找出优先级最高的任务，即任务B，并让它运行。]]></description><category></category></item><item><title><![CDATA[FreeRTOS中vTaskDelay()分析]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/150067458</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/150067458</guid><author>dzdesigned</author><pubDate>Fri, 08 Aug 2025 15:29:58 +0800</pubDate><description><![CDATA[根据宏  #define pdMS_TO_TICKS( xTimeInMs )    ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000U ) )在中断中，任务切换有专门的 API (portYIELD_FROM_ISR())，使用 vTaskDelay() 会调用错误的切换机制。esp_rom_delay_us() 忙等待。]]></description><category></category></item><item><title><![CDATA[VSCode调试JavaScript代码]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/149857301</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/149857301</guid><author>dzdesigned</author><pubDate>Sat, 02 Aug 2025 11:44:31 +0800</pubDate><description><![CDATA[搜索并安装 **"Debugger for Chrome"**（已更名为 **"JavaScript Debugger"**）"url": "http://localhost:5500/index.html", // 本地服务器地址。"program": "${workspaceFolder}/app.js" // 你的JS文件路径。- 在 `Promise`/`async` 函数内部设置断点，支持 `await` 单步跟踪。"type": "node",        // 调试类型。]]></description><category></category></item><item><title><![CDATA[JavaScript中格式化输出字符串单引号‘ ’ 双引号“ ” 反单引号` ` 的使用]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/149856395</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/149856395</guid><author>dzdesigned</author><pubDate>Sat, 02 Aug 2025 11:28:08 +0800</pubDate><description><![CDATA[在使用${} 占位符时，字符串用单引号' ' 和双引号" ",vscode 都不能把name 和 age 识别成变量，输出时，也是输出${name}和${age}，在使用 反单引号``时，${name} 和${age} 就自动识别为变量，输出时也是变量的值。来看VScode中显示 更为直观。]]></description><category></category></item><item><title><![CDATA[C语言结构体变量对齐终极篇]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/149290306</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/149290306</guid><author>dzdesigned</author><pubDate>Sat, 12 Jul 2025 11:14:54 +0800</pubDate><description><![CDATA[变量b 就需要对齐，这个时候编译器就会根据自身对齐值和指定对齐值，来确定变量b的起始地址，自身对齐值4，指定对齐值默认也是4，那么b相对于结构体起始地址的偏移量就是4，地址 1 2 3，就会被空出来，虽然没有数据，但是会算到结构体占用的总空间中。解释一下 成员相对于结构体起始地址的偏移量 也就是成员存储的起始地址 ，假设结构体的起始地址为0，那么第一成员的起始地址就是0，那第二个成员的起始地址是什么呢？假设第一个字节是一个char 类型变量，占用的长度为1个字节，那么第一个成员变量的占用的长度+1。]]></description><category></category></item><item><title><![CDATA[C语言中字符串变量的处理]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/147394824</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/147394824</guid><author>dzdesigned</author><pubDate>Mon, 21 Apr 2025 14:59:07 +0800</pubDate><description><![CDATA[char *strcat(char *dest, const char *src) strcat() 函数是C语言标准库 <string.h> 中最常用的字符串连接函数。strncat() 函数是 strcat() 的一个更安全的变体，它允许指定最大追加字符数，有助于防止缓冲区溢出。值的注意的是，用strcpy拼接字符串时，复制的起始地址应该是结束符占用的那个地址。strlen() 获取字符串，注意，获取的长度不包含结束符占用的那个字节。第二次拼接时，b的首字符应该复制到上一个结束字符占用的地址。]]></description><category></category></item><item><title><![CDATA[C语言结构体sizeof对齐规则详解]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/147045812</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/147045812</guid><author>dzdesigned</author><pubDate>Mon, 07 Apr 2025 15:53:38 +0800</pubDate><description><![CDATA[在C语言中，使用sizeof运算符计算结构体的大小时，得到的结果是对齐之后占用的字节数，而非成员变量实际长度的简单相加。这是因为编译器会根据平台的对齐规则，在成员之间或结构体末尾插入填充字节，以优化内存访问效率。每个成员的必须是其类型大小（或编译器指定的对齐值）的整数倍。整个结构体的大小必须是其的整数倍（末尾可能填充）。成员的顺序会影响填充字节的数量。编译器会插入“填充字节”（Padding）以满足对齐要求。默认对齐值通常由目标平台决定（如32位系统通常按4字节对齐）。]]></description><category></category></item><item><title><![CDATA[FreeRTOS中互斥量实现数据共享优化]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/147024796</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/147024796</guid><author>dzdesigned</author><pubDate>Sun, 06 Apr 2025 14:03:07 +0800</pubDate><description><![CDATA[的实现，读任务可以高效并发，而写任务保证数据一致性。此方案在 FreeRTOS 中充分利用任务通知和互斥量，兼顾性能与可靠性，适用于读多写少的场景。读者-写者锁（Reader-Writer Lock）**优化，允许多个读任务并发访问共享数据，而写任务独占访问。当前实现假设单写任务。如需支持多写任务，需引入队列管理等待的写任务。如果读任务持续不断，写任务可能长期等待。）自动启用优先级继承，避免低优先级任务阻塞高优先级任务。：控制新读任务的进入，写任务执行时阻塞新读任务。：唤醒等待的写任务，避免忙等待。]]></description><category></category></item><item><title><![CDATA[字模III取模软件生成数组规律分析]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/146331671</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/146331671</guid><author>dzdesigned</author><pubDate>Tue, 18 Mar 2025 09:06:21 +0800</pubDate><description><![CDATA[以16*16大小的点阵为例，取模方式如图中所示，纵向取模，字节倒序，生成的数组的顺序，先取上半部分，再取下半部分。例如 0010 0000 ，正常是0x20,如果是字节倒序的话就是0x02。选择纵向，就是垂直方向上递增，字节倒序，就是和正常的二进制数权重值相反，从生成的数组我们可以推断出取模的路径是如下方式，]]></description><category></category></item><item><title><![CDATA[字符取模时纵向取模生成数组注意]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/146328121</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/146328121</guid><author>dzdesigned</author><pubDate>Mon, 17 Mar 2025 22:48:02 +0800</pubDate><description><![CDATA[这里选择纵向取模时发现，生成的数组也是纵向的，如图中的红圈就是第一列的数据，依次类推。接上一篇字节正序和字节倒序，]]></description><category></category></item><item><title><![CDATA[点阵取模中的字节正序和字节倒序]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/146327622</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/146327622</guid><author>dzdesigned</author><pubDate>Mon, 17 Mar 2025 22:25:42 +0800</pubDate><description><![CDATA[图中点阵 bit 左边为字节高位，右边为字节低位，得到的结果,以0x08,0x08开头，此为字节正序。相反，如果是字节倒序的话，就是0x10,0x10开头，以上取模方式采用横向取模。如果是纵向取模同理。以16*16点阵为例，]]></description><category></category></item><item><title><![CDATA[vscode 中打开ESP-IDF插件的欢迎页面]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/146275052</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/146275052</guid><author>dzdesigned</author><pubDate>Sat, 15 Mar 2025 10:05:59 +0800</pubDate><description><![CDATA[在命令行中输入 ESP-IDF:Welcome 回车就能打开插件的欢迎页面了。按快捷键 ctrl+shift+p 或者 查看 命令面板。]]></description><category></category></item><item><title><![CDATA[立创EAD标准版设置板框 ]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/146198496</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/146198496</guid><author>dzdesigned</author><pubDate>Wed, 12 Mar 2025 10:31:12 +0800</pubDate><description><![CDATA[设置→边框设置，进入设置边框 起始坐标。]]></description><category></category></item><item><title><![CDATA[嘉立创EDA标准版自定义元件库]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/145831438</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/145831438</guid><author>dzdesigned</author><pubDate>Mon, 24 Feb 2025 16:15:45 +0800</pubDate><description><![CDATA[从文件入口进入，选择新建，如果是原理图符号就选择符号，如果是PCB封装就选择封装。将画好的原理图符号和封装保存即可。]]></description><category></category></item><item><title><![CDATA[立创EDA设置铺铜设置]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/145115483</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/145115483</guid><author>dzdesigned</author><pubDate>Mon, 13 Jan 2025 14:33:06 +0800</pubDate><description><![CDATA[选中最外面边框，设置 填充样式，网格45° 或者90° 可选。]]></description><category></category></item><item><title><![CDATA[E2Studio 查看RAM ROM使用情况]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/144781910</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/144781910</guid><author>dzdesigned</author><pubDate>Sat, 28 Dec 2024 09:30:52 +0800</pubDate><description><![CDATA[安装完成后选择renesas views → C→ Memory Usage。在控制台就可以看到 RAM    ROM的使用情况了。安装时选择full版本。]]></description><category></category></item><item><title><![CDATA[cad显示捕捉参照线和将光标捕捉到二维参考点开关]]></title><link>https://blog.youkuaiyun.com/dzdesigned/article/details/141997750</link><guid>https://blog.youkuaiyun.com/dzdesigned/article/details/141997750</guid><author>dzdesigned</author><pubDate>Sat, 07 Sep 2024 16:11:51 +0800</pubDate><description><![CDATA[捕获到上一个线段的端点，准确的画出两条平行线。]]></description><category></category></item></channel></rss>