- 博客(22)
- 资源 (1)
- 收藏
- 关注
转载 10种经典的软件滤波方法
如果本次值与上次值之差>A, 则本次值无效, 放弃本次值, 用上次值代替本次值。N值的选取:流量,N=12;如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统。如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低。是对递推平均滤波法的改进,即不同时刻的数据加以不同的权。
2024-12-02 18:03:51
125
1
原创 小白话回调
使用回调函数可以避免这种问题,通过将函数作为参数传递给其他函数,并在需要的时候调用回调函数。有关C语言的回调,已经是老生常谈的问题了,今天我们就来点不一样的,关于定义,实现种种,这里就不再班门弄斧了,网上大佬太多了,这里,仅列举在一些场景的回调调用。回调函数可以在回溯的关键点上执行一些特定的操作。1. 解耦逻辑:回调函数可以将函数之间的逻辑解耦,使得每个函数专注于自己的功能,提高代码的可读性和可维护性。5. 多态性:回调函数可以用于实现多态,通过传递不同的回调函数,同一个调用可以实现不同的行为。
2023-08-17 15:48:54
189
原创 嵌入式软件开发之程序编程规范(五)
在单片机开发或者需要开发 LCD 驱动的情况,需要自己通过工具生成需要使用的中文字库(大多是 GB2312 格式),则需要留意该文件的编码格式,如果文件的编码格式是 utf8,则不能正常对应,如下是LCD 驱动的部分使用的字体库(一般为 GB2312 编码)作为一个软件开发人员,应养成良好的编程习惯,随着编码越来越多,内容也会变得越来越多,规范化自己的编程有助于为了在程序代码量很大的时候,便于自己阅读,也便于别人阅读(团队合作),特别是作为一个合格的开发者,更需要规范自身写的程序代码,形成一种良好的习惯。
2023-06-20 10:35:41
267
转载 嵌入式软件开发之模块化程序设计(三)
例如,做一个手持遥控设备,在程序分层的基础上划分各个模块、如下图,硬件抽象层中就有通用 IO、ADC、定时器、CAN 等驱动 ,功能模块中有按键模块、储存模块和指示灯模块,应用层有人机交互功能,程序的结构一目了然。模块内部使用的全局变量,需要外部修改或者获取时,需要通过封装成 API 函数对外提供,同时可以在函数内有相关限制,防止外部直接操作模块内部的全局变量引发模块运行异常,因此模块内部的全局变量可定义为静态全局变量。在分解初期,可以只考虑大的模块,在中期,再逐步进行细化,分解成较小的模块进行设计。
2023-06-20 10:18:07
909
转载 嵌入式软件开发之程序分层(二)
硬件抽象层和驱动层主要就是为功能模块层提供的,实现该项目需要的功能,比如KEY、LED和EEPROM等功能,其中LEY、LED基本调用硬件抽象层的API函数(更复杂的可能通过片外芯片获取/控制等,因此可能也需要使用硬件驱动层),EEPROM调用硬件驱动层的API函数,即使EEPROM芯片更换(AT24C02或W25Q128等),也不影响EEPROM之前编写含的功能代码程序(前提是AT24C02,W25Q128提供的API函数提供的是统一标准)。即使换了MCU,也只需将调用过硬件抽象层的API函数替换即可。
2023-06-20 10:16:08
1111
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人