- 博客(64)
- 资源 (1)
- 收藏
- 关注
原创 wifi模块异步处理库编写
写这个的库的初衷说来也尴尬。github上找不到好用的库,有几个star挺高的,但是并不好用,而且写的也不怎么好。本地的环境是freertos+stm32所以对模块的初始化和使用有异步的需求。大体的设计思路就是1,串口 DMA+IDLE实现回调函数获取串口数据。2,处理串口数据进行字符匹配3,状态机和标志位实现指令流程。(这里没用,蓝牙模块有用)githu链接地址:git@github.com:writeing/wifilib.git上代码const static stu_wifiC
2021-07-15 17:12:25 300 1
原创 stm32-rs485简易架构
下面分享一个rs485多线管理的库,一共分为一下几个部分1,结构体定义2,注册3,发送4,接收5,回调其次是注册部分,注册函数如下void regRs485Dev(revFunc revDataFunc,uint8_t address,uint8_t index){ for(int i = 0 ; i < RS485_COUNT_LEN ; i ++) { if(s...
2020-04-03 15:11:39 734 1
原创 stm32-关于AT24C02这个芯片的坑点
如标题所述,这个鬼芯片有一个很大的坑点在里面,请看下图。手册上写的是1k 和 2k 是8byte,之后的是16byte,这一点一定要看清楚,一定要看清楚,一定要看清楚。我之前看手册的时候,看成了16byte,导致写入数据8字节之后的部分完全崩溃了,具体的分析拆包代码如下:ErrorStatus writeAt24C02(uint16_t address,void *writeBuff,u...
2020-04-03 14:10:28 1878
原创 stm32-基于FreeRtos 的lwip协议移植
因为要用的以太网通讯,所以移植了一个lwip的协议栈。我使用的是cubeMx生成的代码,这里简单说一下注意事项。freeRtos V2.0不支持lwip,只能使用1.0版本。这个地方是比较需要注意的,因为开启和关闭不弄好,就会导致编译的时候,很多函数无法调用。然后就是基于FreeRtos的系统,Lwip最好的办法是创建一个单独的线程调用起来,在代码里面不停的遍历函数的接收。在一个就是...
2020-04-03 14:03:45 873 2
原创 STM32-高速串口,基于DMA的空闲中断
STM32发送,接收说明串口接收数据的方式,有两种,1,poll2,int中断又分为一次接收一个数据,和DMA一次接收多个数据。考虑到数据的高速情况,我们这里当然是选择DMA了,但是DMA有一个不好的点就是中断触发机制,要么是half,要么是接收完毕,那么就有一个很难受的问题,一帧数据,基本上会被切断,所以对于那些对帧的完整性有较高要求的场景,DMA的这种中断就很难使用。常用的解决...
2020-04-03 11:12:50 1583
原创 STM32F4-usb_slave u盘
使用stm32F4的HSUSB移植一个usb和sd卡组合当做U盘使用的操作想要做到这个功能,大致如下几个步骤 1,SDIO/SPI 驱动 SD卡,具体的驱动可以使用keil提供的eval库 2,下载usb device驱动,我们这里使用的是被动模式,slave 3,添加usb文件到工程 4,修改添加usb底层驱动代码其实,移植usb驱动相对来说比较简单,只需要知道什么是移植。usb驱动是干嘛
2017-08-07 19:09:42 10709 1
原创 stm32-W5500-官网教程
w5500就是一个以太网模块,这个模块本身集成了tcp/ip协议,mcu只需要通过spi协议读写他的寄存器就可以进行数据交互了,下面大致说说stm32移植w5500的过程和步骤吧, 10个引脚中,真正使用的也就只有vcc gnd miso mosi sclk scs 这几个脚,RST和int引脚如果是引用官方的库的话,是不需要的(RST是复位引脚,INT是中断触发引脚)移植W5500大致分为下面的
2017-06-21 17:18:50 54831 8
原创 nw-tcp部分的 bug修改经验
这几天连着修改了好几个tcp方面的bug,也算是有了一个基本的认识吧, tcp在n720里面从srv到open,到write,read,ack,再到close。基本的流程大致如下吧,简单说一下。 srv配置tcp的一些参数,在这里面,主要做了2件事, 一件事就是解析发送过来数据,ip地址,还有port的组成,udp,svr的选择,还有通道的判断, 第二件事就是配置一些tcp的参数,比如现在的
2016-10-25 23:38:06 545
原创 nw-tcp bug的小理解
这两天遇到了tcp方面的bug感觉对tcp的使用会有点帮助,所以写下来,第一个是使用mynetopen之后模块会进入tcp connect过程,但是这个一般比较慢,所以设计成了异步的,问题就是,如果此时再发送mynetopen的话,是按照connect之后的逻辑处理的,也就是返回912(tcp连接已经存在),但是此时实际上是没有链接上的,如果是使用代码来处理的话,这里就会误判,所以需要处理在连接过程
2016-10-13 23:05:34 485
原创 nw-工作过程小结
今天算下来,只能算是修改了一个半的bug,当然了,不算网上的培训的话,勉强算两个吧,其他的bug但是不停的测试还有复现,然后发现不用改就好了。 从改这两个bug,我感觉还是要细心,然后要自信,一般这种所谓的bug,其实可能只需要改一两行代码就好了的,没啥大问题,而且可能还是前面的人留下的遗留问题,比如cnmi那个傻逼bug,现在仔细想来,深圳是个好地方啊,很多资源都没有使用上,这边最不缺的就是工场
2016-10-11 23:50:15 466
原创 NW-修改bug第一步
从今天开始,我的任务又变了一个,转职修改bug了, 前期的代码移植完成之后,现在就是进行补洞了, 主要的目的是完成如下这些, 1,移植过程中遗留的一些小漏洞问题。 2,版本不一样导致的一些小区别,比如creg的电信支持 3,N710遗留下来的一些东西,在这个版本进行完成,(N710不修改了?还是不要了?) 今天一天,差不多算是就修改了一个bug,但是很有代表意义,涉及了ap侧,mode
2016-10-10 23:03:53 400
原创 nw-git配合beyond的使用
实际使用的时候,和学习会有很大的区别,因为人力毕竟是有限的,很多事情无法想象到,我想这也是软件开发过程的一个跳不过去的坑吧, 环境:服务器一套代码,纯净的,不待任何工程,然后多个人同时开发,开发的时候可能会有重复的地方, 问题:怎样保证高效的无误的实现代码的合并,上传,还有程序的验证? 经过多次改进之后,我现在的做法是这样的, clone一份代码,就叫做master,专门
2016-09-23 23:25:09 333
原创 nw-初战
今天把新版本的代码烧写进去了,然后开始了测试还有部分的撸代码过程, 但是发现了几个很傻比的问题,代码极度不同意,别人提交了,都不说一声,然后现在处于初始阶段,代码不停的要提交,提交,然后合并,合并,好麻烦,所以我就弄错了一步,导致整个都麻烦了,一气之下,rm -rf了,然后现在还在编译和添加,日死。 git的正确使用方式,应该是一个专门用来提交和合并,然后另一个专门用来编译和开发,但是代码的合并
2016-09-20 21:56:03 392
原创 nw-HTTP实现
移植http协议到新基线,但是各种问题橫出,驱动不负责导致射频无法实现,射频无法实现导致我们无法调试,结果就是项目后延很严重, http的实现其实相对还是比较简单, 基本的架构是 一个结构体,存储网站等信息,并且会存储一个socket的变量,用在发送数据的地方, 一个结构体保存http的链接状态 httppara就是设置端口然后设置url, https
2016-09-19 22:46:18 913
原创 nw-init
今天上班貌似啥都没干,都不知道写啥, 算是一个开始吧! 对自己要求也不高,就希望每天晚上回来能写点什么, 搞笑的,技术的,生活的,领悟的,或者是扯淡的都可以,当做日志来写吧,晚上去办了一个1488的年卡,然后顺手跑了3.5km,用时32分钟,算下来每秒钟大概1.8m的样子,离3m貌似还有很长的路要走, 跑完之后衣服全部都湿透了,整个衣服的颜色全变了,想想我也是牛逼。第一天就这样,,哈哈,加油
2016-09-18 20:00:04 425
转载 qt-使用vs2012调试qt程序
qt自带的编译器写代码还是很方便,但是调试就有点。。。。。。日狗了,所以我选择了全宇宙最好的编译器调试qt—-vs2012其实vs2012是完全支持qt的开发的,只需要下载一个叫做 qt-windows-opensource-5.1.0-msvc2012_opengl-x86_64-offline.exe这个软件就可以了,链接在这里 http://pan.baidu.com/s/1slR8I
2016-06-03 17:09:45 3262 1
原创 qt-tcp发送和接收识别
tcp的传输方式是1:N的模式, 也就是一个服务器,对应多个客户端。 在使用的过程中,怎么区分客户端哪个是那个,谁是谁,是很重要的一个问题, 今天琢磨了好久,虽然最后失败了,还是写上来,大致了解一下,1:客户端连接服务端。 这个就是运用到了qt的槽机制,自动的生成了线程,可以自动的获取客户端发送的数据,// 新建tcp链接void updComm::initTcp(){
2016-06-03 16:44:57 7171
原创 qt-一个类连接两个界面
在实际开发中,肯定不会是一个界面写到死,都是会新添加一些界面来使用, 昨天弄了一下,如果不是通过一个界面工程来创建一整套class+ui的话,在一个class中调用别的ui还是很麻烦的,首先我们创建一个界面。 创建新建文件->qt->Qt desiger from-选择基本界面->界面名称->确定、创建了之后,build一下,你会在debug文件目录看到一个ui_XXX.h的文件,这个就是界面的
2016-05-27 15:31:33 6485 1
原创 qt-画波形图
这个波形图画的有点复杂,而且核心代码是拷贝的别人的,这里我就简单解析一下吧, 话不多说,上代码。 bxt.cpp#include <QCompleter>#include <QDebug>#include <QTime>#include <mainwindow.h>#include "ui_mainwindow.h"#include <QDebug>using namespace st
2016-05-27 15:17:09 15797 14
原创 qt-多线程读文件
qt本身提供了许多多线程的类,方便我们进行多线程的开发创建线程:线程类Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex 提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock 提供了一个可以同时读操作的锁QReadLocker与
2016-05-27 14:59:23 9405 1
原创 arm-linux驱动:c文件操作控制驱动
驱动写好了,得写给应用程序来控制驱动,验证他的部分功能。看是否运行正常,前面我们写的是一个globalmem的内存驱动,也就是共享了一部分的内存出来,可以进行数据的存储。好了,下面是代码。#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>#inc
2016-05-19 17:27:05 523
原创 arm-linux驱动:初步字符设备
linux驱动大致分成三个种类, 1,字符设备,,,最简单最常用的一种, 2,块设备,,,,比较麻烦,但是大都功能很强大, 3,网络设备,,,这个就不说了,最麻烦的一类,但是也是最单一,技术最成熟的一类,基本无需自己重写今天我学习的是字符设备的基本操作,谢了一个globalmem,#include <linux/init.h>#include <linux/types.h>#include
2016-05-17 17:37:36 597
原创 centOS下arm-linux-gcc安装
下载arm-linux-gcc的安装包, http://pan.baidu.com/s/1bpHldx1[百度链接]然后放到linux里面解压 tar zxvf arm-linux-gcc这样解压的话就在当前目录下面 也可以这样解压 tar zxvf arm-linux-gcc -C /opt这样就是解压到了opt目录下,把arm-linux-gcc添加到环境里面,就可以直接使用了
2016-05-16 20:37:33 4853 1
原创 arm-linux驱动:hello
环境配置好了之后,就是开始编写程序了, 驱动程序分为两个部分, 一个是源文件。也就是.c .h文件,这些是运行的代码。 一个是makefile,用来编译程序的,毕竟每次输入那么长的命令用来编译程序还是很累,直接写成一个makefile文件方便多了, make -C 、/home/wxc/linux-2.6.32 M=pwd modules而且清除多余的文件也不方便,所以,makefil
2016-05-16 16:42:02 551
原创 CentOS下ftp服务器配置andWin7下cuteftppro连接
windows和linux之间的文件共享就那么两种方式, 一种是smb, 一种就是ftp了, smb每次开机多得配置,太麻烦了, 所以直接配置一个ftp,每次开机都是一样的,多好 废话不说了,开始配置, 首先就是安装包的下载: yum install vsftpd然后就是配置ftp服务器在vsftpd目录下有这几个文件夹, ftpusers是放置用户名称的文件夹, user_l
2016-05-13 10:45:55 1552
原创 centOS下samba服务器配置
在学习linux或者arm开发的时候,一般都会涉及到数据文件的传输问题,虚拟机是Centos,物理机是win7。 linux上写代码终究不是很爽,没有完好的编译器,没有好用的调试工具,怎么可能和windows相比呢, linux和windows之间的数据传输方式一般会有三种方法, 1,samba 也就是本章要用的。 2,nfs 这是linux与linux之间的传输方式,貌似windwos也可
2016-05-13 10:31:37 954
原创 Qt模拟串口-tcp连接发送数据
上一节已经基本上完成了qt界面的基本布局,下面就是后台数据的发送和接收了, 前面说了,qt和uc/os 交互使用的方式是tcp 为啥要用tcp,而不使用别的呢, udp:按道理udp是最好的,不用连接,想发就发,不用管端口。但是,qt这个鬼,他封装的udp函数不支持服务器下发数据,也就是udp的服务器不能下发数据,只能接收。 串口:既然是串口通讯,为啥不直接用串口呢。c语言对串口的支持太差
2016-05-10 10:30:08 3828
原创 QT串口模拟-基本界面
最近在重新学习u/cos-ii,学习嘛,以一个小东西练手是最好的学习方式,所以有了串口解析模块,算是填充我的代码库吧, u/cos-ii 模拟的是单片机端的串口解析,上位机串口调试是用Qt写的,由于windows下c语言开发串口不是很方便,所以我选择数据传输方式采用tcp方式,用socket来进行数据传输, 基本的模型就是,qt做tcp的server端,可以同时连接多个下位机,同时发送,同时接受
2016-05-08 18:28:58 2484
原创 Python爬虫-用迅雷下载电影
前段时间用Python写了一个爬取豆瓣电影的脚本,可以把评分高于8.0和评价人数高于10w人的电影保存下来,保存的格式是json的, 然后熬夜用c#写了一个界面软件可以显示和读取电影信息, 然后打算加一个一键下载功能,所以现在的基本流程就是, 读取豆瓣电影 ->json数据->c#显示->一键下载 今天做的就是一键下载的脚本,爬取的网站是飘花电影,程序运行的基本流程是 1,
2016-04-25 16:08:45 23434 1
原创 mfc-串口功能的实现
界面,串口,然后就是各个按钮的功能实现了, 其实很简单的,不同的按钮不同的功能,直接双击那个按钮,就可以添加一个click的动作函数了, 下面我会放出我的代码的github连接,有兴趣的可以看一下哎这里大概说一下注意把, 1,串口读取到的数据是VARIANT格式,这个得专门写函数解析,我是在网上找到的,并没有弄明白是什么意思, 2,edit控件是CString格式,本地是一些数据需要保存才可
2016-04-22 13:43:02 1159
原创 mfc-串口控件的添加和使用
既然是写一个串口,那么肯定需要串口了,目前mfc支持两种串口创建方式, 1:调用串口类,继承并且实现部分函数, 很复杂,但是很灵活 2:下载串口控件,也就是Axxxxx X控件, 这个在csdn上面有,2个下载币,名字叫做MSCOMM,http://pan.baidu.com/s/1qYMOZJQ 做做好人喽,,下载之后把里面的4个文件复制到c/windows/system32
2016-04-22 13:24:05 8242 2
原创 mfc-串口控件变量设置
在知道了一些个基本的界面之后,咱们来介绍怎么给控件添加变量首先是4个radio button按钮,这四个东西两两一组,(后台划分的),首先,右键radio button ->添加变量(B)->类别->Value->变量类型->int(radio只需要知道0 1 就够了,但为了赋值方便,所以用了int)->变量名然后就是edit的,edit里面显示的是字符串,所以添加的变量是CString类型的,这里
2016-04-22 13:09:58 1399
原创 mfc-vs2012基本窗口介绍
在设置变量之前,咱先介绍一下vs2010 mfc开发时的一下窗口 1:解决方案资源管理器, 这里面放的是一些配置文件,还有.c .h资源文件,界面生成的class就在这里面,这也是主要的编辑窗体, 2:类视图 这里面放的是整个工程所有的class,可以直观的看到各个类,基本没什么乱用。 3:资源视图 在解决方案窗体里面是没有界面的文件存在的,也就是说你冲解决方案
2016-04-22 11:19:51 3164
原创 mfc-串口工具界面
知道了大概的功能之后,接下来就是就是界面的设计了,咱们一个控件,一个控件的讲解, 先来张运行起来的界面 接收区: 1:首先是整体的框架,我用的是Group box,把整个接收区包起来, 2:接受数据模式,也就是hex和文本的选择, 这个比较简单,学过其他界面开发的都应该知道,用的是radio button 先放上去连个,然后按住Shift+ctrl +
2016-04-22 11:11:27 1783 4
原创 s3c2440-外部中断
s3c2440 的cpu有7种中断模式 1,user 2,fiq 3,irq 4,svc 5,abt 6,sys 7,und 一般的运行模式是user,当cpu发生什么其他情况时,就进入对应的工作模式,比如快速中断fiq,或者是普通中单irq。当Without sub -register 中断触发之后,SRCPND相应位会被置1在没有被INTMSK屏蔽或者不是fiq(快速中断),
2016-03-30 23:02:03 725
原创 S3C2440-GPIO之button
这是非中断模式的按键读取,没有防抖。 读取一个引脚的值就是读取CONXDAT的相应位置。 且mini2440的按键按下是低电平,/*time:2016-03-30,change:创建文件,GPIO.c GPIO.hauther:wxc*/#include <S3C2440.H>#define uint_8 unsigned char#define uint_32 unsigned
2016-03-30 20:50:19 392
原创 S3C2440-GPIO和jlink配置
s3c2440有130多个GPIO口,且分为9个组, GPX( A,B,C,D,E,F,G,H,I,J) 对应的操作寄存器名称是 GPXCON //设置IO口的工作方式 00-输入,01-输出,10-特殊功能,11-保留(两位表示一根引脚线) GPXDAT //IO口是输入:读取引脚的高低电平,输出:设置高低,特殊:不能用 GPXUP //设置引脚的内部上拉电阻,0使用内
2016-03-24 14:25:00 655
原创 python微信机器人之aliyun服务器
微信机器人写好了,你不可能在电脑上一直挂着啊, 所以就想到了放到阿里云的服务器上 我的阿里云服务器的系统是ubuntu 14.3的版本 python lib的目录是在 /usr/lib/python2.7/dist-pagebag/把前面写的东西通过securtCRT发送到服务器,然后pip相应的库第一步就完成了,如果注意一下的话,会发现linux系统的终端是没法显示图片的,何况我还是通
2016-03-15 10:46:07 2146
原创 python微信机器人之小i
前面介绍了图灵机器人的接入,但是在后面的聊天中发现这个鬼的智能化程度太低了,聊天一点都不好玩,不说和siri比吧,和我以前接触过的小i都没法比, 所以在顺着图灵的做法,把小i也嵌入进去了 微信接口还是用的wxbot这个框架,虽然这个框架不在地,代码变量的设置啊,还有部分功能的不完善,但是目前也懒的去找了,能用就行 小i的接口相对比较麻烦,他有一个header,而且其中还有他自己的加
2016-03-15 10:28:13 5048 5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人