<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hateregiste的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hateregiste</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hateregiste]]></copyright><item><title><![CDATA[嵌入式软件开发中常见知识点问答集锦！]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/158388693</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/158388693</guid><author>hateregiste</author><pubDate>Wed, 25 Feb 2026 17:03:22 +0800</pubDate><description><![CDATA[本文总结了C语言编程中的基本知识点，可以协助读者在学习、工作中更好地运用该编程工具，不管是低阶编程，还是高阶编程，期望达到扫除知识盲点的作用。]]></description><category></category></item><item><title><![CDATA[C语言中如何优雅、准确、高效地设计和处理输入输出]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/155004976</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/155004976</guid><author>hateregiste</author><pubDate>Wed, 19 Nov 2025 00:34:34 +0800</pubDate><description><![CDATA[笔者在参加国内一些算法考试时，接触过一些需要处理输入输出的情景，本文介绍几种情况下的实用方法，希望能帮得到你。]]></description><category></category></item><item><title><![CDATA[国产RTOS RT-Thread的使用经验总结]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/150958949</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/150958949</guid><author>hateregiste</author><pubDate>Thu, 28 Aug 2025 19:02:41 +0800</pubDate><description><![CDATA[总结在使用国产RTOS RT-Thread中的心得、教训、经验，以此作为学习积累和今后复盘。]]></description><category></category></item><item><title><![CDATA[国产数据库FlashDB移植到国产MCU GD32F103RC上的几点经验总结]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/150931270</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/150931270</guid><author>hateregiste</author><pubDate>Wed, 27 Aug 2025 17:45:08 +0800</pubDate><description><![CDATA[在移植国产数据库FlashDB到MCU GD32F103RC的过程中，测试了片内Flash和片外SPI Flash两个例程，笔者解决了几个难题，比如"Error: Flash wait busy has an error."。逐一排查解决了问题，并总结出了几点经验。]]></description><category></category></item><item><title><![CDATA[记录一次国产数据库FlashDB在国产MCU GD32F103上的移植和测试过程]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/150535730</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/150535730</guid><author>hateregiste</author><pubDate>Tue, 19 Aug 2025 22:25:50 +0800</pubDate><description><![CDATA[记录一次国产数据库FlashDB在国产MCU GD32F103上的移植和测试过程]]></description><category></category></item><item><title><![CDATA[嵌入式软件工程师（MCU）的几个段位]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/149961976</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/149961976</guid><author>hateregiste</author><pubDate>Wed, 06 Aug 2025 10:34:39 +0800</pubDate><description><![CDATA[了解各个编译器中提供的attribute((...))语法扩展，用于给变量、函数、结构体等附加编译属性，以控制：内存布局、优化行为、调用约定、链接特性、段定位、对齐方式、可见性（visibility）、诊断。）的源代码，深入理解RTOS的工作机制，特别是任务切换时PC、LR、XPSR等寄存器的入栈、出栈过程以及SP堆栈指针的变化过程，看见一块基于RTOS多任务的板子或者产品，心中能立刻联想起RTOS内核发生任务切换的种种底层细节，并铭记于心。可以组织一定规模的团队，系统性的开发一个编译器。]]></description><category></category></item><item><title><![CDATA[代码生成器STM32CubeMX的使用方法]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/148931256</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/148931256</guid><author>hateregiste</author><pubDate>Thu, 26 Jun 2025 19:08:52 +0800</pubDate><description><![CDATA[STM32CubeMX是ST公司开发的一款代码生成器和配置程序，程序员只需要在图形化配置界面点击几下按钮，就可以生成一些初始化代码，加快软件开发速度。笔者摸索使用了两天，将使用心得和使用方法总结出来。在“Clock Configuration”配置界面，可以选择HSI、HSE等时钟源，在HCLK等相应的位置填入时钟频率f，可以自动计算和配置分频、倍频参数。有FreeRTOS、RT-Thread nano等RTOS，也有LWIP、MQTT等开源IOT组件，总之点选上相应的包，代码就自动包含进目标文件夹。]]></description><category></category></item><item><title><![CDATA[带有RTOS的C语言程序中，如何合理地读写全局变量？]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/148066586</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/148066586</guid><author>hateregiste</author><pubDate>Mon, 19 May 2025 18:04:59 +0800</pubDate><description><![CDATA[带有RTOS下和不带RTOS（裸机状态）的全局变量读写方法有很大不同。此篇文章将讨论带有RTOS的C语言程序中，如何合理第读写全局变量。]]></description><category></category></item><item><title><![CDATA[C语言程序中，如何合理地读写全局变量？]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/146063208</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/146063208</guid><author>hateregiste</author><pubDate>Thu, 06 Mar 2025 11:09:50 +0800</pubDate><description><![CDATA[C语言程序中，如何合理地读写全局变量]]></description><category></category></item><item><title><![CDATA[C语言运算符的优先级]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/144569084</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/144569084</guid><author>hateregiste</author><pubDate>Wed, 18 Dec 2024 20:58:18 +0800</pubDate><description><![CDATA[简洁地罗列出各种C语言运算符优先级大小，并给出了优先级排序表。]]></description><category></category></item><item><title><![CDATA[Keil 4 环境下安装GD32芯片包程序的方法]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/136686910</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/136686910</guid><author>hateregiste</author><pubDate>Wed, 13 Mar 2024 18:30:41 +0800</pubDate><description><![CDATA[SVD（System View Description） 文件是 CMSIS（Common Microcontroller Software Interface Standard） 中的定义的一个 XML 格式的纯文本文件，其包含了芯片内核、芯片所具有的外设以及内核和外设的寄存器的完整描述（详细到寄存器的每个 BIT 位）。核心文件SVD的主要作用有：1)生成芯片的.h文件；例如，STM32 系列的 SDK 就是在 CMSIS 的基础上添加了自己的各种源码文件、示例代码、文档等等。（1）下载芯片包程序。]]></description><category></category></item><item><title><![CDATA[python基础之查看已安装的模块]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/105336315</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/105336315</guid><author>hateregiste</author><pubDate>Mon, 06 Apr 2020 00:06:42 +0800</pubDate><description><![CDATA[查看Python已安装的模块

1.Windows或Linux控制台下查看模块

1）pip list

该命令查看的是Python安装的第三方模块。



2）pip freeze

该命令属于老版本的Python了。



3）pydoc modules

该命令查看的是所有的模块，包括內建模块，截图类似下面的help。

2.Python交互解释器查看模块

1）help('modules'...]]></description><category></category></item><item><title><![CDATA[python基础之多进程的创建、启动、阻塞]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/105334155</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/105334155</guid><author>hateregiste</author><pubDate>Sun, 05 Apr 2020 22:17:59 +0800</pubDate><description><![CDATA[Process()创建进程、start方法启动进程、join方法阻塞进程

1 实验1

有如下代码，命令行中运行后会报错，对象实例不能作为参数传入到Process函数

#打印字节函数

def print_hex(bytes):
 l = [hex(int(i)) for i in bytes]
 print(" ".join(l))


#串口接收超时函数   
def...]]></description><category></category></item><item><title><![CDATA[关于STM32单片机不能用JLink和ST-Link下载程序的原因分析]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/94027338</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/94027338</guid><author>hateregiste</author><pubDate>Fri, 28 Jun 2019 18:18:44 +0800</pubDate><description><![CDATA[最近一段时间给STM32单片机下载程序的时候，有的时候出现下载不了的情况，尝试过JLink+MDK,JLink+JFlash,

ST-Link+MDK,ST-Link+ST-LINK Utility均不能实现程序下载。故障截图如下：









在本人当前的应用场景下，是因为STM32单片机的读保护功能启用了，通过ST-Link+ST-LINK Utility的Target-Option...]]></description><category></category></item><item><title><![CDATA[python基础之变量类型、内存地址、内存大小]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/91879427</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/91879427</guid><author>hateregiste</author><pubDate>Thu, 13 Jun 2019 17:49:44 +0800</pubDate><description><![CDATA[python源代码如下：

a=1000

#id()可以查看该变量的内存地址

id(a)

#sys.getsizeof()可以查看该变量的内存大小

import sys

print(sys.getsizeof(a))




]]></description><category></category></item><item><title><![CDATA[python基础之列表的切片]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/91811389</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/91811389</guid><author>hateregiste</author><pubDate>Thu, 13 Jun 2019 11:00:23 +0800</pubDate><description><![CDATA[python源代码如下：

#a=[0,1,2,3,4,5,6,7,8,9]

a=list(range(10))

#b=[2,3,4,5]

b=a[2:6]





分析：

b=a[n1:n2]，该表达式表示从列表a的下标n1开始切片刀下标n2-1，总共切片的元素个数为（n2-1-n1+1）=n2-n1个。

通常n2&gt;n1，当n2&lt;=n1时，b=[]，此时b为空列表。

...]]></description><category></category></item><item><title><![CDATA[以太网实验之TCP的数据传输]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/83591437</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/83591437</guid><author>hateregiste</author><pubDate>Wed, 31 Oct 2018 22:02:47 +0800</pubDate><description><![CDATA[1  PC机和终端的连接关系如下图所示



PC机的IP地址为192.168.0.68，建立一个端口号为60000的server；终端的IP地址为192.168.1.181，本地端口号为1030。假设此socket连接已经建立。

2

（1）路由器2（192.168.0.116）发送一个27字节的数据给目的主机192.168.0.68



 

（2）目的主机192.168.0.68响应路由...]]></description><category></category></item><item><title><![CDATA[以太网实验之TCP连接的建立]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/83590926</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/83590926</guid><author>hateregiste</author><pubDate>Wed, 31 Oct 2018 21:49:40 +0800</pubDate><description><![CDATA[1  PC机和终端的连接关系如下图所示



     PC机的IP地址为192.168.0.68，建立一个端口号为60000的server；终端的IP地址为192.168.1.181，本地端口号为1030，发起一个TCP连接指向192.168.0.68，60000。



 

2   ARP协议-PC机和路由器相互寻址

（1）路由器2（192.168.0.116）发起一个ARP数据包，请求目...]]></description><category></category></item><item><title><![CDATA[关于UCOS任务卡死的原因分析]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/80668421</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/80668421</guid><author>hateregiste</author><pubDate>Tue, 12 Jun 2018 17:54:05 +0800</pubDate><description><![CDATA[现象：函数function1()运行到“USART2SendData(&quot;\r\n&quot;,2)”时，UCOS任务卡死，最高优先级任务也不能运行。分析：运行到USART2SendData(&quot;\r\n&quot;,2)，因为UART2_SendEnable=0导致关掉中断后没有恢复现场（开中），任务不能切换，于是任务卡死。增加红色高亮部分代码，即可实现正常运行。function1(void){    	USART2S...]]></description><category></category></item><item><title><![CDATA[关于串口队列不能出列的调试过程和分析]]></title><link>https://blog.youkuaiyun.com/hateregiste/article/details/80659299</link><guid>https://blog.youkuaiyun.com/hateregiste/article/details/80659299</guid><author>hateregiste</author><pubDate>Mon, 11 Jun 2018 23:15:07 +0800</pubDate><description><![CDATA[    先上代码    if(xMB_GetData(&amp;amp;data) == QUEUE_SUCCESS)    {        ...    }  QueueState xMB_GetData(uint8_t *pdata){		QueueState st;    st = Queue_Out(&amp;amp;xMBRxSQ, pdata, 1);	return st;}...]]></description><category></category></item></channel></rss>