<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[altiumer的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/altiumer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; altiumer]]></copyright><item><title><![CDATA[双二阶 IIR 滤波器 万能滤波器]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/155239304</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/155239304</guid><author>altiumer</author><pubDate>Tue, 25 Nov 2025 16:53:15 +0800</pubDate><description><![CDATA[_________/             <-- 阻断 (低频/直流)└──────────────────────────-> 频率 (Hz)|             /         <-- 允许通过 (高频)└──────────────────────────-> 频率 (Hz)└──────────────────────────-> 频率 (Hz)└──────────────────────────-> 频率 (Hz)|       \   <-- 允许通过 (低频)]]></description><category></category></item><item><title><![CDATA[CXThermO快速上手 欧姆龙EJ1TC4]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/154733303</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/154733303</guid><author>altiumer</author><pubDate>Wed, 12 Nov 2025 11:56:35 +0800</pubDate><description><![CDATA[摘要：该文档介绍了欧姆龙温控模块的调试步骤。首先需确保硬件连接正确，安装对应型号驱动。通过软件连接设备后，在一般设置中选择2段PID模式，配置加热类型和温度值。设定值需下传到模块，启动RUN模式后执行AT自动整定。可通过趋势显示监控温度变化，整定完成后的参数保存在control文件夹bank0中。整定过程中需注意状态显示变化，参数正确后模块状态会变灰。（150字）]]></description><category></category></item><item><title><![CDATA[运算放大器的计算]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/134229017</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/134229017</guid><author>altiumer</author><pubDate>Sun, 05 Nov 2023 13:27:15 +0800</pubDate><description><![CDATA[虚短是指在理想运算放大器的负反馈条件下，由于运算放大器的开环增益非常高（理想情况下为无穷大），即使输入端（同相端和反相端）之间的电压差非常小（理想情况下为零），也能产生足够的输出电压。因此，在这种情况下，我们可以假设运算放大器的两个输入端之间的电压是相等的，即它们之间的电压差是“短路”的，这就是所谓的“虚短”。因此，我们可以假设运算放大器的输入端是“断路”的，即没有电流流入或流出运算放大器的输入端，这就是所谓的“虚断”。所以放大器2端的入口电压等于1端入口电压等于Vin。]]></description><category></category></item><item><title><![CDATA[C#中实现简单的参数存储]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/133753286</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/133753286</guid><author>altiumer</author><pubDate>Wed, 11 Oct 2023 15:58:30 +0800</pubDate><description><![CDATA[封装目的：封装后的读函数比原函数入口参数更小，操作更便捷  封装后的写函数比原函数明确了读写失败的BOOL类型返回值。前提：小文件，参数配置类信息  ini类型保存。1.调用存储相关的API。]]></description><category></category></item><item><title><![CDATA[C#中添加自制控件]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/133685760</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/133685760</guid><author>altiumer</author><pubDate>Sun, 08 Oct 2023 17:38:46 +0800</pubDate><description><![CDATA[下面函数中涉及一些计算过程，其实是由于窗体绘图默认原点是左上角，而我们习惯的坐标系原点的左下角，里面的计算过程是为了将我们输入的位置坐标进行转换的过程，无需过分纠结，理解原理，this.Height.,this.with为实际的绘图画布大小。接下来重写的OnPaint函数是真正的绘制过程，每次用户改变属性信息时，由于执行了  this.Invalidate();以上信息都是属性信息，不涉及逻辑，属于为了实现自己绘制目的而定义的成员变量。控件属性：（显示在加载进入工具箱后的属性界面）2.进入代码编辑页面。]]></description><category></category></item><item><title><![CDATA[C#中的委托调用（显示委托订阅式）]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/132507665</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/132507665</guid><author>altiumer</author><pubDate>Sat, 26 Aug 2023 15:10:24 +0800</pubDate><description><![CDATA[采用订阅的方式，更能体现委托功能的发布理念，发布一次事件，所有的订阅者都能收到信息，但是上面的步骤略显繁琐，优化后采用隐式调用，方法如下。1.前篇文章采用最直接的方式，不使用事件发布订阅机制，直接绑定，本篇将使用委托的订阅机制来实现和上一篇完全一样的功能。只需重新定义 EVENT 类型就ok,剩下的不用管，系统会自动实现委托机制。]]></description><category></category></item><item><title><![CDATA[C#中的委托调用(委托绑定式)]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/132507544</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/132507544</guid><author>altiumer</author><pubDate>Sat, 26 Aug 2023 08:39:29 +0800</pubDate><description><![CDATA[一个可以被调用的委托机制就完成了（发布委托），例子很简单，就是通过委托Openfrom来打开不同的页面，入口参数是页面的名字，实现这个功能的方法有很多，但是思想大于方法，面向对象编程委托机制还是要学的。执行Openfrom("集中监控")时通过对OpenFromMethod(string FrmName)1.采用最直接的方式，不使用事件发布订阅机制，直接绑定。Openfrom("集中监控");]]></description><category></category></item><item><title><![CDATA[减速比是如何减小转动惯量的]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/130381945</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/130381945</guid><author>altiumer</author><pubDate>Wed, 26 Apr 2023 11:48:54 +0800</pubDate><description><![CDATA[平面运动是我们常见的，F=MA，F力，M质量，A加速度  ，在旋转运动中T=J*dw/dt  ,T是转矩，J是转动惯量，w是角速度，将转动惯量可以理解为平面运动中的质量属性。所以采用减速机构来放大了转动惯量，由于减速机构的存在减小了对于电机本身转动惯量的需求，这个角度看。转动惯量是旋转机构所拥有的属性，就像谈运动物体离不开质量一样，所以没有什么转动惯量越大越好或者越小越好的原则，没有转动惯量就没有旋转运动！J一般描述为旋转轴在旋转质量上的积分，也就是J受到旋转体的质量和形状的影响！]]></description><category></category></item><item><title><![CDATA[搞清电机反电势波形产生原因]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/129768841</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/129768841</guid><author>altiumer</author><pubDate>Sat, 25 Mar 2023 16:59:56 +0800</pubDate><description><![CDATA[可以假想手里拿着一个铁棒，绕着一个圆柱永磁体做圆周运动，理想情况下，铁棒方向始终垂直于磁场方向，所以电势E=BLV，理想条件下，此时反电势波形为矩形波，由于充磁不均匀，永磁体形状等原因常见为梯形波。B L V 磁生电的原理，有导体在做有效的切割磁感线运动，那么该导体就会产生电势，该电势一般被认为是反电势。当永磁体为平行充磁时：磁场方向不在沿圆周径向，而是平行向上，此时导体运动到不同位置，便会产生不同的反电势。此时能够产生有效切割的磁场B为B*sin（角度） ，E = B*sin(角度)*L*V。]]></description><category></category></item><item><title><![CDATA[rt-thread中的io端口管理]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/116354887</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/116354887</guid><author>altiumer</author><pubDate>Mon, 03 May 2021 15:25:28 +0800</pubDate><description><![CDATA[学习目标：

rt-thread中的io端口管理

学习内容：

在rt_thread中的设备树：


]]></description><category></category></item><item><title><![CDATA[rt_thread中的内存管理]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/116166985</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/116166985</guid><author>altiumer</author><pubDate>Sun, 02 May 2021 16:23:54 +0800</pubDate><description><![CDATA[学习目标：rt_thread中的内存管理



学习内容：


]]></description><category></category></item><item><title><![CDATA[rt_thread中的任务间同步及通信]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/116101210</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/116101210</guid><author>altiumer</author><pubDate>Mon, 26 Apr 2021 18:15:54 +0800</pubDate><description><![CDATA[学习目标：任务间同步及通信

学习内容：

在多任务的实时系统中，一项工作的完成往往需要多个任务协调的方式共同完成。



对于操作/访问同一块区域，称之为临界区。任务的同步方式有很多种，但其核心思想都是在访问临界区时只允许一个或一类任务运行。

关闭中断：

关闭和打开中断接口由两个函数完成：

rt_base_t rt_hw_interrupt_disable(void);

rt_base_t rt_hw_interrupt_enable(rt_base_t level); level 可以...]]></description><category></category></item><item><title><![CDATA[rt-thread的软件结构之定时器]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/116030587</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/116030587</guid><author>altiumer</author><pubDate>Sat, 24 Apr 2021 13:47:28 +0800</pubDate><description><![CDATA[学习目标：

学习rt_thread中定时器的相关知识

学习内容：

操作系统中，其核心的节拍时钟仍然是基于硬件时钟的基础上。可以将其称之为节拍。

所谓的软件定时器必须以该节拍为基本单位。

rt_thread的定时器中存在着两种的定时机制，一种是单次的触发定时器，该定时器触发后，只会触发一次的定时器时间。另外一种是周期性的触发定时器事件，那就顾名思义了。

在rt_thread的定时器系统中，维护着两个重要的全局变量：

1.当前系统经过的tick时间的rt_tick(当硬件定时器中断来临时rt_ti]]></description><category></category></item><item><title><![CDATA[rt-thread的软件结构之线程调度与管理]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/115710179</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/115710179</guid><author>altiumer</author><pubDate>Thu, 22 Apr 2021 20:27:13 +0800</pubDate><description><![CDATA[学习目标：



学习内容：rt-thread的软件结构

1.组件component：shell command 命令行指令

                Device FS  设备虚拟文件系统

                POSIX     可移植操作系统接口

                Lwlp:       tcp / ip栈

     ...]]></description><category></category></item><item><title><![CDATA[图解rt_hw_stack_init]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/113851960</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/113851960</guid><author>altiumer</author><pubDate>Thu, 18 Feb 2021 21:26:06 +0800</pubDate><description><![CDATA[/*
*****************************************************************************************
*                              函数实现 开辟栈空间
*****************************************************************************************
*/
/*线程栈的初始化*/
rt_uint8_t *rt_.]]></description><category></category></item><item><title><![CDATA[详细分析rt_thread_startup(&idle )；]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/113841137</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/113841137</guid><author>altiumer</author><pubDate>Thu, 18 Feb 2021 09:53:41 +0800</pubDate><description><![CDATA[分析线程启动函数，该函数的主要作用为：启动一个线程并将其放到系统的就绪列表中。


rt_err_t  rt_thread_startup(rt_thread_t thread)
{
	/*设置当前优先级为初始优先级*/
	thread-&gt;current_priority = thread-&gt;init_priority ;     （1）
	thread-&gt;number_mask  = 1L &lt;&lt; thread-&gt;current_priority ;（2）
	/*改变线程]]></description><category></category></item><item><title><![CDATA[详细分析一个rt_thread_init的过程]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/113827339</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/113827339</guid><author>altiumer</author><pubDate>Wed, 17 Feb 2021 10:03:31 +0800</pubDate><description><![CDATA[以空闲线程为例

1.定义点数据存在内存的静态空间

/*空闲线程的线程控制块*/
struct rt_thread idle;

rt_ubase_t rt_idletask_ctr=0;              //空闲时将要自加的零碎

extern rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; //线程优先级链表

static rt_uint8_t rt_thread_stack[IDL...]]></description><category></category></item><item><title><![CDATA[_OBJ_CONTAINER_LIST_INIT(c)的理解]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/113823605</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/113823605</guid><author>altiumer</author><pubDate>Tue, 16 Feb 2021 11:58:55 +0800</pubDate><description><![CDATA[说的在具体点就是：
#define _OBJ_CONTAINER_LIST_INIT(c)  \
    {&amp;(rt_object_container[c].object_list),&amp;(rt_object_container[c].object_list)}（1）
式（1）让人感到迷惑主要是因为&amp;(rt_object_container[c].object_list)命令连续出现两次

首先来到_OBJ_CONTAINER_LIST_INIT（c）调用的地方：
sta...]]></description><category></category></item><item><title><![CDATA[空闲线程与阻塞延时的实现]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/113591170</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/113591170</guid><author>altiumer</author><pubDate>Wed, 03 Feb 2021 16:17:07 +0800</pubDate><description><![CDATA[学习目标：

RT-THHRAD

学习内容：



在rt-thread的系统中，研究空闲线程与阻塞延时的实现



学习产出：

提示：这里统计学习计划的总量想要实现空闲线程，并进行阻塞延时，则是需要进行滴答定时器的设计，可以通过滴答定时器进行的延时计算。

 /*Systick的中断频率设置*/
 SysTick_Config(SystemCoreClock /RT_TICK_PER_SECOND);

于是在SYSTick_Handler(void)中执行：

void SysTi...]]></description><category></category></item><item><title><![CDATA[stm32寄存器学习01]]></title><link>https://blog.youkuaiyun.com/altiumer/article/details/109907432</link><guid>https://blog.youkuaiyun.com/altiumer/article/details/109907432</guid><author>altiumer</author><pubDate>Sun, 22 Nov 2020 17:40:06 +0800</pubDate><description><![CDATA[学习目标：

掌握应用寄存器完成stm32的GPIO操作

1.使能enable

2 模式选择modle

3 方向 dir

4读写 r/w



学习内容：

从

学习时间：

提示：这里可以添加计划学习的时间
例如：
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点

学习产出：

提示：这里统计学习计划的总量
例如：
1、 技术笔记 2 遍
2、优快云 技术博客 3 篇
3、 学习的 vlog 视频 1 个
...]]></description><category></category></item></channel></rss>