- 博客(10)
- 收藏
- 关注
原创 不同季节送风温度、季节判断条件、推荐室内温度
夏季设定通常比冬季高2°C–4°C(如办公楼夏季24°C vs. 冬季20°C),以适应人体对季节变化的自然适应。:人流量大,顾客活动频繁,适当低温可提升舒适感,但需避免过冷(如<22°C)导致冷热交替不适。恒温建筑(如高端写字楼):可能全年保持22°C±1°C,但需承担更高能耗成本。:每调高1°C,制冷能耗可降低约5%-8%(如从22°C升至24°C)。特殊区域(如数据中心):温度设定以设备需求为主(如18°C–27°C)。:与夏季接近,保持全年温度稳定(±2°C)有助于提升员工适应性。
2025-03-27 14:55:51
382
原创 自动控制消抖方式优劣对比
延时消抖可以有效避免短暂的干扰或噪声引起的误动作,但可能会引入响应延迟,尤其是在需要快速响应的系统中,这种延迟可能导致系统超调或者调节时间增加。另外,死区控制可能导致系统在死区边界附近出现振荡,如果反馈值在死区边缘来回摆动,可能会引起控制器的反复切换,这时候可能需要结合其他方法。而延时消抖如果在延时期间反馈值持续波动,可能导致延时不断重置,控制动作被持续延迟,影响系统响应。总结来说,两种方法各有优缺点,选择哪种取决于具体应用的需求,比如对精度、响应速度、抗干扰能力的要求,以及系统的动态特性等。
2025-03-17 14:15:17
397
原创 STM32G0系列Flash CFGBSY置位问题
STM32G0系列(我这在G030和G070能复现该问题)开始运行后,即使没有任何Flash操作,Flash外设的SR寄存器的CFGBSY位也会在你操作某个外设(可能是timer也可能是i2c等)后置位,如果不做任何处理,后续如果操作Flash擦除写入,会导致HardFault或者Flash相关Hal函数返回错误。参考网上部分网友的方案,先给Flash不使用的区域写入点儿数据,此时CFGBSY会清零,但是会导致PGAERR和PGSERR置位,之后清除这2个故障位,然后就能正常对Flash进行操作了。
2024-04-17 11:09:08
474
原创 增量式PID中的微分项为什么是e(k) - 2e(k-1)+e(k-2)
说白了就是 这次误差和上次误差的变化量 - 上次误差和上上一次误差的变化量,就是连续三次误差的变化量的变化量,而变化量的变化量就是变化率,就是微分了(积分是变化量,微分是变化率)而增量式PID算法公式中的【e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差】似乎不是那么好理解。小学数学知识告诉我们这个式子能写成[e(k) - e(k-1)]-[e(k-1)-e(k-2)]其实这个东西展开就是e(k) - e(k-1)- e(k-1)+e(k-2)
2023-11-03 17:47:56
179
原创 对数组使用strstr时的主意事项
这里strstr的实际执行效果是 在数组a+b+d中找b+d,因为数组a b d在内存中大概率是连在一起的,所以strstr从数组a开始的指针往下找,找到\0(其实就是0)的时候其实查找范围已经超出了abd所在的内存范围,如果运气差点儿,abd数组后面连续很长的一段内存里一个0都没有,那么你的这个strstr就会运行很长时间,直到世界的尽头。但是在实际使用时要注意,如果引入的2个指针确实指向的是字符串,没什么问题,但是如果引入的2个指针指向的是数组,那就有问题了。如果引入的指针是指向数组的。
2023-04-21 17:03:12
399
原创 如果写入Flash前不擦除会发生什么
③第三只小耗子,耗中猛耗,走过了全部8个老鼠夹子,前4个老鼠夹子已经被触发合上了所以没动静,后4个老鼠夹子被触发后,啪啪啪啪,被触发后合上,所以第三只耗子走过后,这8个老鼠夹子变成了“合合合合合合合合”,就是00000000。④然后来了个人类,看到有老鼠夹子被触发合上了,为了下次老鼠夹子能继续抓老鼠,就把老鼠夹子掰开了,而且根据规则,是一次把所有老鼠夹子都掰开了,8个夹子就变成了“张张张张张张张张”,就是11111111,回到了最开始的状态。夹子合上变张开,bit从0变成1;
2023-04-14 15:38:43
1944
2
原创 启动文件里的heep_size的设置
这里主要针对stm32的启动文件里的heep_size众所周知这个heep_size 是堆的大小的设置,比如stm32f030的默认值是Heap_Size EQU 0x00000200就是说堆大小默认512字节,而堆的话,如果不用操作系统或者C自带的内存管理函数(malloc啊 free啊啥的),其实没多大用这样好多人包括我自己其实就想这里能不能设置成0得了,可以省出512字节RAM事实证明,没必要,编译器比我们聪明,看看MDK编译过程中产生的map文件,其中有这么一...
2021-11-17 11:29:50
904
原创 const void * 做函数参数的用法
引子最近在看sx126x的驱动程序时发现了这么个用法sx126x_status_t sx126x_set_sleep( const void* context, const sx126x_sleep_cfgs_t cfg ){ uint8_t buf[SX126X_SIZE_SET_SLEEP] = { 0 }; buf[0] = SX126X_SET_SLEEP; buf[1] = ( uint8_t ) cfg; return ( sx126x_stat
2021-11-03 09:57:54
8380
5
原创 关于MSP430的RST引脚的处理方式
前些天给MSP430G2553的小片子画了个TSSOP的转接板,方便用杜邦线连模块用。画板子的时候把所有引脚都用2.54的排针引出,想着不会出什么问题,因为N年前在用F5438的时候就是直接用LQFP100的转接板把所有引脚引出来,插上3.3V电源片子就能跑了(对于当时只用过51的我还是很震撼的,毕竟51要跑起来外面要接一大堆东西)。但是把这个G2553焊上去,连launchpad下程序后,发现程序怎么都不运行,还以为是买到便宜的假片子了。量了一圈,3.3V电源正常,RST引脚2.5V!这种半高
2021-01-27 17:25:32
2168
原创 12864 OLED屏幕 的例程永远从第1列而不是第0列开始的问题
注意,TB上卖的12864,商家会提供例程,最近发现其中一个版本的例程存在问题显示16*16点阵的字符,一行128像素,正好显示8个。但是使用商家提供的例程,当你设置从第0行0列显示,每行的字符却都是从第1列开始,而不是从第0列问题出在下面的代码中void OLED_Set_Pos(uint8_t Row,uint8_t Cal) { OLED_WR_Byte(0xB0+R...
2018-11-26 16:15:04
2692
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人