自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

armwind的专栏

蜗牛的奔跑:男儿志步天下事,但有进步不有止!

  • 博客(128)
  • 资源 (12)
  • 收藏
  • 关注

原创 pads logic 生成参考编号带分隔符以及不统计不贴元器件的BOM

PADS参考编号分离,以及生成不包含不贴装元器件的BOM

2022-12-10 23:40:14 1158 1

转载 Modbus Poll v9.9.2 Build 1690 Modbus测试工具单文件版

Modbus poll 单文件版本,不需要注册码

2022-06-06 21:38:35 1016

原创 Modbus-RTU状态机接收数据帧的方式(串口 or DMA)

传统单片机一般具有串口外设,有一些还具有DMA。针对没有DMA外设的单片机,只能使用方式1了,每个字节的串口数据都会产生串口中断。而对于具有DMA的单片机,我们可以使用方式2,当接收到一帧后才会产生中断,这样就不会频繁打断主程序运行。Modbus的一帧串口接收缓存最大为256个字节,所以接收到一帧数据,会产生256个串口中断。但串口中最好只做数据接收操作。不要有过多的耗时动作,不然会丢数据的,也影响主循环的实时性。1. Modbus 数据帧接收方式1-串口中断这种方式,在每次收到一个字节的数据

2022-05-21 09:22:33 3260

原创 ModbusTCP/Modbus RTU by TCP

gdgdgfsdfsdfdfsdfModbus TCP1.ModBUS TCP协议介绍其实就是加了个协议头,以及去掉RTU报文的CRC校验码 * <------------------------ MODBUS TCP/IP ADU(1) -------------------------> * <----------- MODBUS PDU (1') ----------------> * +-----------+-------------

2022-05-12 20:15:19 819

原创 Freertos vPortEnterCritical卡死调试方法

今天遇到一个问题,Freertos卡在vPortEnterCritical断言中了,从vPortEnterCritical中的代码可以看到,此时在中断中执行了vPortEnterCritical。在检查完代码后,还是没注意到是在哪里调用了这个方法(老眼昏花了)。于是添加了几行log,轻松定位到问题。1.错误日志:RTOS_CORE [I] vPortValidateInterruptPriority:754 ulCurrentInterrupt:0x44RTOS_CORE [I] vPortVal

2022-05-10 22:13:11 3658 3

原创 Freertos中的几个中断优先级宏的理解

这里以STM32F4-Cortex-M4内核为例,来记录下面这些配置是什么意思。/* The lowest interrupt priority that can be used in a call to a "set priority"function. */ #define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf这个是内核优先级分组的位数,对于STM32F4来说,使用了4位来表示优先级。这里把优先级设置到最低,主要是能够为了其它中断能够打断内核

2022-05-10 20:25:07 1905

原创 Modbus xMBUtilSetBits函数注释

该方法用来设置线圈的数据,贴上部分代码。我们知道Modbus为数据为大端模式(高地址放在低位,低地址放在高位),这样可以按着我们的习惯来设置IO数据。如下为设置多个线圈帧。今天就以这样的组合看modbus协议如何发送和解析的协议帧的。下图是我的测试记录,可以看到差异差异就是倒数第3个字节框选1:发送的报文Tx:008108-01 0F 0B B8 00 10 02 03 00 43 68框选2:发送的报文Tx:008116-01 0F 0B B8 00 10 02 03 C0 43 38 下面

2022-05-03 15:04:06 840

原创 STM32串口发送中断踩坑

今天想测试下Modbus设备,手上暂时没有串口转485的模块,就打算用手上的stm32f042的开发板做个串口转485模块。如下所示但是软件实际开发过程中,遇到了麻烦。现象: 在打开串口接收中断时,串口会一直产生除接收中断外的其它中断,非常奇怪。 USART_ITConfig(InitPort, USART_IT_RXNE, ENABLE); //使能接收中断通过查手册发现,在打开接收中断时,默认会打开溢出中断下面的方式是不能清除溢出中断标记。 if (USART_GetFlag

2022-05-02 20:31:40 4844

原创 以esp32-s2开发需要了解的地方(esp32-s2为例)

文章目录1.系统f复位阶段需要关注的GPIO2.片上存储3.地址映射4.时钟配置5.入口函数6,分区表1.系统f复位阶段需要关注的GPIOESP32-S2 系列芯片共有 3 个 Strapping 管脚(GPIO0,GPIO45,GPIO46),这几个IO口默认都是内部上拉/下拉的,在芯片的系统复位(上电复位、RTC 看门狗复位、欠压复位、模拟超级看门狗 (analog super watchdog) 复位、晶振时钟毛刺检测复位)过程中,这3个GPIO的状态会被写入锁存器中,直到MCU关机。GP

2021-06-05 20:25:20 2404

原创 几款常用esp32外设差异

几款常用esp32外设差异官网器件信息比较链接从淘宝上看到这几款esp32卖的比较多,对比了下他们差异,感觉基本都差不多,主要差异点在ROM大小,SRAM,蓝牙,处理器核心,其中ESP32-S2的工作温度最宽,ESP32-S3为双核从下面能够看到这3款均没有内置FLASH(其它也有内置FLASH的),需要偏外接SPI FLASH,红色为差异点下面能够看到只有ESP23-S3 具有MCPWM电机控制接口,ESP32-C3没有camera接口。...

2021-06-05 12:30:16 4456

原创 esp32编译环境配置

1. 配置连接Windows 平台工具链的标准设置上面这个链接是官方详细配置说明,其实这里有2种安装方式,在安装前需要安装python命令(当时我安装的是python3.9),最好安装好git.exe命令,本人当时安装的cmder.exe终端工具,。1.安装方式1:下载exe安装器,这个需要很长时间https://dl.espressif.com/dl/esp-idf-tools-setup-2.3.exe2.安装方式2:通过esp_idf源码目录下的安装命令安装,在命令行下执行instal

2021-06-05 09:40:39 6594 2

原创 mysql sql语句中的ENGINE,AUTO_INCREMENT,CHARSET的理解

文章目录1.误区2.ENGINE 扩展理解1.误区好久没搞mysql了,在看后台代码时,发现类似于ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户与设备关系表';这条语句,有些不理解。DROP TABLE IF EXISTS `r_usr_eqpt`;CREATE TABLE `r_usr_eqpt` ( `id` int(11) NOT NULL AUTO_INCREMENT, `usrid` int(11) D

2021-03-07 22:33:57 4264

原创 socket.io简单使用

这里介绍使用一款简单易用的socket封装库socket.io.slim.js.下面是socket.io一个聊天简单demo,大家可以下载尝试一下。git clone https://github.com/socketio/chat-example.git另外还有一篇不错的博文:https://www.cnblogs.com/renhui/p/6544835.html这里我稍微加了几个自己的测试事件,client <script> //var host = 'h

2021-03-07 18:05:09 330

原创 浏览器中的对象总结

这些对象都在下面连接中有介绍,更详细请参考该链接:https://www.w3school.com.cn/jsref/dom_obj_document.asp1.Window 对象浏览器为每一个打开的窗口生成一个window对象,该对象包含了所有窗口的属性。也可以理解成当前窗口的命名空间,所有定义的对象,在window对象中都可以找到,甚至可以不用显示定义。<script> $('.weui-btn').click(function() { window.clearInte

2021-03-07 16:22:53 276

原创 javaScript代码何时执行

javaScript引入位置一般在Head标签中引入css在body最后引入js文件好久没用JavaScript了,这里开始学习下。在学习WEUI时(http://www.jqweui.cn/download),下面的注释引起了我的注意。这里看着他们引入的位置还是有区别的。<!-- head 中 --><link rel="stylesheet" href="https://cdn.bootcss.com/weui/1.1.3/style/weui.min.css">

2021-03-06 21:11:03 771

原创 vue组件的注册

有时候项目开发时,我们给一个普通组件增加样式以使达到更好的显示效果。但是如果在其它地方也想使用这种样式的组件,难道要重新拷贝过来吗?答案是不需要的,这里就需要将这个经常用的组件,封装成一个组件,注册到Vue中。文章目录1.注册全局组件2. 注册局部组件3.单文件组件注册和使用1.注册全局组件我们可以使用Vue.component,更多请参考官方文档:Vue.component('component-a', { /* ... */ })Vue.component('component-b', { /

2021-01-23 17:24:35 142

原创 vue学习之的v-for,:key,@,ref,nextTick的使用以及生命周期函数介绍

1.v-for,:key,@,ref下面是官方的文档,可以点进去看下,最好结合例子实践下。v-for官方文档key官方文档ref官方文档nexttick官方理解例子例子可以直接拷贝到(https://www.runoob.com/try/try-cdnjs.php?filename=vue2-v-for)实践。<!DOCTYPE html><html><head><meta charset="utf-8"><title>

2021-01-23 12:23:22 735 1

转载 Vue 中 this.$router 与 this.$route 的区别 以及 push() 方法

官房文档里是这样说明的:通过注入路由器,我们可以在任何组件内通过 this.router访问路由器,也可以通过this.router 访问路由器,也可以通过 this.router访问路由器,也可以通过this.route 访问当前路由可以理解为:this.$router 相当于一个全局的路由器对象,包含了很多属性和对象(比如 history 对象),任何页面都可以调用其 push(), replace(), go() 等方法。this.$route 表示当前路由对象,每一个路由都会有一个 rout

2021-01-20 08:35:34 787

原创 javascript(ES6)-语法学习

由于项目需要做一个前端页面,所以就借机学习一下javaScript脚本。在我的认识里,javaScript的语法和C语言很类似,在心里上有一定优势,所以就开始干吧。从基本的开始干起。文章目录到底行尾加不加分号“;”1.定义变量到底行尾加不加分号“;”关于这个问题,网上众说纷纭。网上说加不加分号会影响性能,毕竟要传输的数据变大了些。但是我看了一些开源仓库,有很多都是用了分号。为此后面的开发,我暂且都会在尾部加分号。1.定义变量就目前学习了解到javascript定义变量可以使用**let、var、c

2021-01-18 22:48:01 194

原创 CanOpen协议栈学习笔记2-EMCY、guard&Heartbeat

1.Emergency Object当设备内部出现错误,设备就会上报且** Error Event**.且每一类Error event只会上报一次。当设备没哟错误产生时,就不会在上报Error Event.当我们想让设备支持Emergency,就需要至少支持0x00xx和0x10xx,体现在数据字典中就是必须支持这两个数据域。否则协议栈运行时极有可能出现空指针,一去不复返。...

2020-09-20 21:41:27 2792

原创 CanOpen协议栈学习笔记1-帧格式,SYNC和NMT报文介绍

前面已经记录过can协议,后面开始CanOpen协议栈学习。其实协议栈代码已经看过了,而且已经在开发板上跑过了。这里回过头来,重新看下之前遇到的坑,记录下学习笔记。下面均以标准帧为例文章目录1.CanOpen帧格式2.SYNC2.1 sync报文介绍2.2从哪里开始触发sync2.2如何关闭sync功能2.NMT State Machine1.CanOpen帧格式下面是CanOpen协议帧格式,数据大小上和标准Can帧没什么区别,只不过对头部进行了划分。1.头部变化:标准Can帧有11位的

2020-09-19 22:19:27 6896 1

原创 生活不仅仅只有代码

距离上一次写感悟已经过去6年了,时间飞快仿佛就在昨日。一直在欺骗自己时间一直都有。但时间真的流逝太多了,直到上个月我才认识到自己在理财方面的不足。下面总结下自己的经历。活在技术里的自己这6年的时间,我一直埋头专研技术,可以说达到了忘我的“境界”。曾经下班的地铁上,等公交的站台旁,吃饭的桌子上,陪家人的短暂时间,都会研究下android系统代码。工作第二年,尽管公司双休,但是我会去公司看代码,严重的苦行僧角色。忘了外面的世界,忘了找女朋友,忘了还有其它的乐趣,仿佛生活只有代码。也许只有研究完一个模块

2020-09-18 23:17:18 410 4

原创 stm32f042调试Can心得

这两天玩了一下stm32f042的can,但是折腾了2个晚上,还是没有进展。我知道stm32f042F6P6 ssop20封装的pin17,pin18默认是PA9,PA10的功能,如果想使用PA11和PA12,需要进行端口映射。这样的话,我直接就用了下面的代码,进行端口映射, SYSCFG_MemoryRemapConfig(SYSCFG_CFGR1_PA11_PA12_RMP);结果Can总线一直没有波形出来。使用回环模式调试,总线上一直没有波形。由于CAN的PA11和PA12和串口1的PA9和P

2020-06-23 21:09:37 3730 1

原创 Can总线协议学习

上周学习了Modbus协议的内容,后面几周晚上学习下Can总线。这几天晚上一直在看CanOpen协议源码,现在开始整理笔记,虽然网上有很多大牛写过,我还是自己记录下,这样印象才深刻。文章目录1.Can总线电平介绍2.Can总线何时是空闲的3.Can总线的标准帧和扩展帧结构4Can总线帧类型4.1 数据帧4.2 远程帧4.3 错误帧(1)错误情景分下面几类(2)错误帧类型4.4 过载帧5.Can总...

2020-06-03 07:33:35 2111

原创 STM32 HardFault_Handler调试总结

最近自己写了个简单的内存管理,想到能更好的管理内存,不巧在使用时进入到了HardFault_Handler了。根据之前的经验是使用jlink或者stlink进行硬件仿真,看看是在哪一行出了问题。一般情况下是无效地址使用,或着堆栈溢出问题。不过这些在调试时都要查手册中的寄存器描述,还是有些头疼的。我百度了下,广大网友还是有不少办法的。博文1:https://blog.csdn.net/electrocrazy/article/details/78173558博文2:https://www.cnblogs.

2020-06-03 07:19:47 2310

原创 FreeModBus主从机联调

这个周末一直在调试FreeModBus,事先已经对ModBus协议有了初步认识,并且也阅读过FreeModBus源代码。看着代码很简单,本以为半天功夫就可以移植后,可确花了2天时间。现在整理下调试笔记。主机复位后发送请求数据,然后进入无休止的发送状态在定时器时间调试不完全的情况下,容易出现断言错误接收模式时有时会接收到无效帧T35_50US时序调整1.主机复位后发送请求数据,然后进入无休止的发送状态此中情况发生在Master设备上,主要是由于发送数据打包后,我们需要发送一个(void)xMB

2020-06-03 07:18:27 1044 1

原创 Altium designer批量更改原件原理图和PCB库

有时候只有原理图和PCB文件,为了让原理图和PCB文件能够对的上,必须要加上库才行。为此分别将原理图和PCB文件导出库文件,然后在相互更新。文章目录1. 导出库文件1.1 导出原理图封装库2.2 导出PCB文件封装库2.更改原件原理图2.1 修改全部原件2.1 修改相同原件的原理图3.修改PCB库3.2 修改全部库3.1 修改部分库4.进行匹配1. 导出库文件1.1 导出原理图封装库选中对...

2020-02-29 13:16:14 9471 1

原创 FreeModbus添加主机功能

经过前面几个夜晚的学习,此刻已经在FreeModbus中添加了主模式的代码,特此记录下添加心得体会。代码添加还是很容易,就是要保证数据准确的发送出去文章目录1. 添加前的思考2. 添加工作模式(ASCII,RTU)接口2.1 接口描述2.2 接口注册过程3. 添加数据打包过程3.1 接口介绍3.2 接口实现4. 实验演示1. 添加前的思考在添加主模式代码前,深入的分析了FreeModbus源...

2020-02-14 23:11:38 3454 2

原创 FreeModbus ascill工作模式数据接收发送分析

文章目录1. ASCII帧结构介绍2. FreeModBus ASCII工作模式发送数据代码分析3. FreeModBus ASCII工作模式接收数据代码分析前面分析代码一直是拿RTU工作模式来分析的,不知道ascill工作模式有何不同。其实除了帧起始和末尾格式有些差异外,其它基本是一致的。大概的差异点有下面几点1.ASCII是以字符’:‘开始,以回车 换行结束-’\r,’\n’(CR,LF...

2020-02-14 21:37:22 844

原创 FreeModbus串口移植注意事项

FreeModbus串口移植因为要考虑到实时性,这部分还是很重要的。为了保证实时,使用中断还是很有必要的。下面以RTU的工作模式为例。文章目录1. 串口接口描述2. 串口接收方法xMBRTUReceiveFSM()2.1 串口xMBPortSerialGetByte()移植示例2.2 xMBRTUReceiveFSM移植示例3. 串口发送方法xMBRTUTransmitFSM()3.1 软件循环...

2020-02-13 23:05:25 1338 2

原创 FreeModbus状态机和事件总结

从FreeModbus源码中能够发现有很多状态机,了解这些状态机能更快的理解FreeModbus源码流程。下面逐个接受各个状态机的流程和驱动机制。由于modbus有3种封包模式ASCII,RTU,TCP,这里就以最常用的RTU为例,从源码进行分析,此例程为源码中的win32例程,不过不影响探究流程。文章目录1. FreeModbus 串口接收状态机1.1.系统后设置工作状态为`STATE_RX_...

2020-02-12 23:06:39 3272 1

原创 Modbus代码和软件结构简介

在这里先感谢下FreeModbus作者Christian Walter,让我们能学到开放的ModBus源码。不过源码中只有从设备的代码,但这已经足够了,后面有时间添加主模式代码。学习之前先了解下代码结构和各个模块的功能。文章目录1.freemodbus-v1.6源码下载2.FreeModbus源码目录1.freemodbus-v1.6源码下载外国的网站可能有点慢,坚持下载下来吧。https...

2020-02-11 23:01:56 1035

原创 Modbus常用功能码简介

1.常用功能码日常开发常用的功能码就那几个,基本都是读取传感器数据,配置参数。其它的功能很少用。对主设备来说,外部输入的变量,如开关量,传感器的数据都是只读的,因为这些取决于外部条件。对从设备来说是可以读写的,因为主设备和具体的执行设备之间还隔了一层从设备,主设备获取数据,需要经过从设备。代码中文名称位操作/字操作操作数量主设备访问权限从设备访问权限01读线圈状态...

2020-02-10 22:23:12 2852

原创 Modbus协议简介

这两天把Modubs重新看了一下,之前只是简单的使用没有系统总结。关于Modbus协议的讲解,官方文档讲解的非常清楚,不多说。下面记录下学习笔记文章目录1.Modbus数据类型2. Modbus请求帧结构3.Modbus响应帧结构1.Modbus数据类型Modbus是一种简单的软件协议,说它简单,可能大家在日常工作学习中也有这样类似的用法,只是没有形成体系软件而已。Modbus包含4种数据结...

2020-02-10 22:14:54 2197

原创 python byte和str互相转换

最近为了体验python实时画图功能,必须把python升级到更高的版本(升级到3.6.8),安装matplotlib库,但是发现一些之前的旧例子无法正常运行,在调试的时候发现执行命令后,返回的值是byte而不是str。所以这里总结下环境:Python 3.6.81.转换方法1)byte转换成strstr(bdata, encoding = “utf-8”) ,其中bdata为byt...

2020-02-04 13:45:28 7813

原创 python写入数据到csv文件(cameraservice内存统计)

文章目录1. 元组的特点2.元组运算符3. 实例演示4. 元组存在的意义1. 元组的特点元组的元素不可以修改元素可以是不同类型创建空元组 cell = ()元组包含一个元素 cell = (2020,)元组的索引从0开始2.元组运算符与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。Python 表达式...

2020-02-02 23:22:00 592

原创 python字符串string-列表[]-元组()-字典{}总结

1. 字符串定义字符串可以用单引号和双引号圈住,结尾不需要加分号;,var1='armwind1' var2 = 'armwind2' var3 = "armwind3"print "var1[0]:", var1[0]print "var1:", var1print "var2[0]:", var2[0]print "var2:", var2print "var3[0]:"...

2020-02-02 18:52:49 252

原创 python使用空格和空行需注意的地方

作者:Godric_wsw链接:https://www.jianshu.com/p/2cb52cd8461a来源:简书1.概述在python代码中,需要加空格的一共有四个地方需要特别注意。即二元运算符,逗号,冒号,#号。2.逗号逗号后面要加空格,但是如果后面是小括号,则不用# 逗号func = (0,)x, y = y, xprint x, y3.冒号冒号前不加空格,冒号...

2020-02-02 09:32:37 8713 1

原创 Python关键字介绍和使用

接下来的这段时间,工作中需要修改,编写Python脚本。之前也一直没有写过,这里就花点时间,稍微快速学习一下Python,并记录下学习过程。有过面向对象,面向过程的编程经验,学习起来应该会快点。下面先列举出pytyon关键字,let’s go!andexecnotassertfinallyorbreakforpassclassfromprint...

2020-02-01 22:29:04 1109

原创 cmder添加adb命令

1.下载adb命令官网下载adb包2.添加adb命令到cmder中解压之后的adb包含下面3个文件,1个可执行文件和2个dll驱动文件。如下所示找到路径:C:\Program Files (x86)\cmder\vendor\git-for-windows\mingw64\bin,将上面解压出来的三个文件,直接拷贝进去,结果如下所示:此时在cmder终端接口使用adb命令即可。3....

2019-08-26 17:11:57 2242

yuv22rgb.rar

本资源位RGB24转YUV420的VS2015工程,可参考博文https://blog.csdn.net/armwind/article/details/99943987进行查阅。

2019-08-21

VS2010 TCP协议client和server简单通信例程

TCP工程可以在VS2010编译通过,亲测是可以使用的。机器环境是windows10 x64。不清楚的可以参考:https://blog.csdn.net/armwind/article/details/87564919

2019-03-04

VS2010 UDP协议client和server简单通信例程

UDP工程可以在VS2010编译通过,亲测是可以使用的。机器环境是windows10 x64。不清楚的可以参考:https://blog.csdn.net/armwind/article/details/87564919

2019-03-03

windows编译nginx(包含rtmp)可执行程序源码包

此资源为在windows环境下编译包含rtmp功能的nginx可执行程序,所有的源码依赖包都包含在其中。考虑到压缩包体积太大,所以把依赖库源码删除了,编译之前需要重新解压到源码下。 需仔细阅读README.md说明文档。 详细编译依赖环境请参考:https://mp.csdn.net/mdeditor/88046357

2019-03-03

stdint.h和inttypes.h下载

VS2010等其它编译器没有这两个文件,导致编译报错。本人是在编译ffmpeg编译的时候遇到的问题,特此记录一下。

2019-02-24

ctsVerfifiler.apk

ctsVerifier apk,亲测可用。安装之前最好系统是userdebug版本 adb root adb remount adb install CtsVerifier.apk

2018-03-06

emwin工具集合(GuiBuilder,SetupFontCvt等)

附件中包含了GuiBuilder,SetupFontCvt等工具包,亲测可用。具体可参考博文 http://blog.csdn.net/armwind/article/details/78441556

2017-11-04

Android6.0 TestingCamera

该资源是android6.0 pdk目录下,TestingCamera源码,异常强大。

2016-12-11

mutex类PC机验证实验

该资源是在PC机上验证android mutex类的实例。

2016-09-24

android thread类pc验证实例

该实例是拿出android thread类,在PC上验证的实例,可以根据自己的验证需求,验证!

2016-09-24

android string类在PC上验证实例

此资源是android string完整实例,大家可以拿到本地亲自探索一下。

2016-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除