- 博客(8)
- 收藏
- 关注
原创 GPIO电平滤波(概率方式)
GPIO电平因为外部环境影响会出现抖动,但是GPIO本身是0/1状态,所以不能通过均值等方式滤波,更多的方案是延时获取IO状态,本文介绍一种概率方式滤波。例如一共采集10次电平数据,这10次状态有0也有1,当出现1的概率大于70%时(7次1,3次0),输出结果为1。概率和数据缓存大小可自行设置。注:代码哪里不足请自行修改。
2025-02-23 17:30:43
246
原创 CANOPEN协议栈网站
CANopenNode 热度逐渐上升的协议找CANopenNodeCanfestival 最早的协议找CanfestivalFree CANopen Stack 国内开发Free CANopen StackN7 Space,过航天级ECCS criticality B pre-qualified审查的canopen协议栈Lely corert-labs,官网还有其他总线协议栈,商用好像付费c-open注:协议栈是遵循某些开源协议的,在使用前一定要仔细查看相应的开源协议,注意取舍
2024-08-08 17:36:19
332
原创 代码规范(借鉴别人的)
(4)对于常量,当可能发生作用域和名字冲突问题时,以上几条规则对于常量同样适用。注意,虽然常量名的核心部分全部大写,但此时常量的前缀仍然用小写字母,以保持前缀的一致性。(2)对于静态变量(static variable),在其名称前加“s”和变量类型符号前缀。5.常量、宏、模版的名字应该全部大写。如果这些名字由多个单词组成,则单词之间用下划线分隔。宏指所有用宏形式定义的名字,包括常量类和函数类;常量也包括枚举中的常量成员。(3)函数内部等局部变量前不加作用域前缀。
2024-08-05 16:37:06
308
原创 字节与int\float等数据类型转换
此处使用小端模式存储数据,Byte范围为0~255,满255进1,例如有int=1234,则byte[0]=214,byte[1]=4。注意:此处没有做溢出检测,无论操作系统使用小端还是大端,这里都将使用小端模式存储。
2023-09-13 09:33:39
613
原创 STM32IIC通讯问题
1、初始化后总线一直处于buzy:大部分原因是因为硬件,检查通讯电路是否正常,默认总线空闲为高。2、运行一段事件后buzy卡死:通讯过程中造成硬件短路、通讯的外设(eeprom等)因为受到干扰不正常强制拉低通讯电路,也要先检查硬件。如果硬件没问题需要软件复位IIC通讯。3、软件复位IIC通讯:在调用软复位IIC接口前需要拉高SCL和SDA通讯脚,间隔几十微妙后检测一下是否被拉高,检测到拉高后再调用软复位。4、程序卡在等待设备忙碌:忙碌检测逻辑有问题,参考下面链接。
2023-05-29 17:36:29
1115
1
原创 串口通讯问题
溢出:当RXNE没被清零,再一次接收到数据。正常逻辑是串口数据先通过移位寄存器,再到数据寄存器,RXNE为1,读取数据后硬件自动清零。溢出就是当数据寄存器有数据,没有及时读取,串口又再一次接收到数据,触发溢出。开启非空中断默认开启溢出中断。1、串口中断函数放在了内存慢速区,导致不能及时读取数据。清除溢出标志,溢出后数据一定丢了,要改换接受数据方式。3、串口中断优先级过低或者代码中有频繁开关中断的地方。2、针对于上面原因解决。
2023-05-27 11:11:26
1189
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人