c
被追杀的晨曦
这个作者很懒,什么都没留下…
展开
-
(C语言进阶)设计模式之--观察者模式
观察者模式C实现原创 2022-09-08 15:23:56 · 750 阅读 · 0 评论 -
ubuntu移植编译Google的Protobuf-C以及开发流程
1、移植PC版本的ProtoBuf的相关文件和可执行程序1、获取[Protobuf源码](https://github.com/google/protobuf)2、编译宿主机版本Protobuf软件,因为Protoc-C依赖Protobuf的库文件和头文件(配置编译环境可执行文件)1)下载完源码后,执行./autogen.sh2)生成一个configure可执行程序3)执行./configure --prefix=/homelisx/usr/local/protobuf没有错误输出,生原创 2022-03-29 10:54:18 · 2629 阅读 · 0 评论 -
C进阶---函数宏的封装方式
函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。第一种:#define INT_SWAP(a,b) \ int tmp = a; \ a = b; \ b = tmp但是这种方式作用域在遇到if、while等不使用{}会在第一个分号就结束了。第二种:#define INT_SWAP(a,b)\{ \ int tmp =.原创 2021-07-13 18:54:52 · 559 阅读 · 0 评论 -
FreeRTOS浅析:解决两个任务运行冲突,系统停止一个任务唤醒另一个任务的方法
FreeRTOS中的任务和多线程的概念差不多,但是任务的本质是把时间片无限的切小,小到人分辨不出来,其实还是一个时间只能运行一个任务,这是和多线程的根本区别。FreeRTOS中的任务有几种运行态:如果我正在运行A任务,但是B任务起来的时候我需要把A任务挂起,等B任务结束A任务继续运行,不能冲突。下面是demo。首先运行一个主程序,开启一个任务,里面再开启两个任务extern ...原创 2020-01-16 11:15:14 · 4764 阅读 · 0 评论 -
cjson打包数组
cJSON *timerJsonArry=cJSON_CreateArray();先创建一组数组, cJSON *ArrayItem = cJSON_CreateObject(); cJSON_AddNumberToObject(ArrayItem, "enable", g_system_data.device_state.mqtt...原创 2020-01-16 10:52:13 · 2199 阅读 · 0 评论 -
malloc之后free导致出错的问题
今天写程序的时候碰到一个问题,在给一个指针拷贝内存的时候,总是出错 memcpy(AudioSend_Stream, UdpPackageHead, 6);后来发现是没有开辟内存,好吧,比较低级的错误,然后开辟了一段内存空间 AudioSend_Stream = (unsigned char *)malloc(sizeof(UdpPackageHead));之后发现没问题...原创 2019-08-10 12:47:03 · 1493 阅读 · 2 评论 -
I2C驱动框架时序以及运用(可直接移植)
最近运用SN7326做了一个I2C驱动,由于没有多的I2C,所以用GPIO口模拟了I2C来通信,做一个记录,便于以后复习运用。I2C最麻烦的就是时序问题,调试起来有点困难,最好是按照标准时序来调试,不然 会出现一些莫名其妙的错误,比如收到的数据为0xFF,比如没有ack回复,收不到数据等等。 下面这是I2C时序图:大概的原理是这样的,I2C一般是两根线,一根是SCL,一根是SDA...原创 2019-05-14 15:01:32 · 1451 阅读 · 0 评论 -
数据结构C语言实现单链表
c语言实现单链表的插入、删除、查找和遍历功能,逆序功能稍等链表最难的就是指针的操作,所以要多画一下,然后对照图写代码实现功能,才能增进对链表的理解原理如图: 代码实现如下: /*单链表*/#include <stdio.h>#include <stdlib.h>typedef int T;typedef struct node{ /* 1 ...原创 2019-02-20 17:02:16 · 740 阅读 · 0 评论 -
linux下c++运行shell获取返回值
c++中运行shell脚本一般有三种方法,分别是system、exec和popen,都是调用/bin/sh来执行参数指定的命令,/bin/sh 一般是一个软连接,指向某个具体的shell,比如bash,-c选项是告诉shell从字符串command中读取命令; 在该command执行期间,SIGCHLD是被阻塞的,好比在说:hi,内核,这会不要给我送SIGCHLD信号,等我忙完再说;...原创 2018-08-08 18:32:44 · 4648 阅读 · 1 评论 -
linux ubuntu中关于Nand Flash用法和解析
原文出处https://blog.csdn.net/xiaoxiaozhu2010/article/details/18087197最近在写一个测试脚本实现擦除NandFlash重新写入用md5sum重新验证的功能,网上看到一个博主的关于NandFlash的解析,很全面,不能转载,所以复制过来借鉴一下,以示提醒.使用命令前用cat /proc/mtd 查看一下mtdchar字符设备;或者用...转载 2018-07-31 16:26:30 · 916 阅读 · 0 评论 -
关于1946 ILI2117A触摸屏驱动的移植和修改
TP芯片的log打印路径是在kernel\drivers\input\touchscreen\ilitek_drv_common.h里1022行#define CONFIG_TOUCH_DRIVER_DEBUG_LOG_LEVEL (0) 的这个宏,1代表log打开,0代表log关闭.触摸屏的触点位置和显示位置正好相反,因为厂家主要供应手机厂商,所以分辨率为1024*600,X为600,Y为102...原创 2018-06-04 17:52:57 · 2469 阅读 · 1 评论 -
Android.bin文件的加密操作
1准备脚本mksqfs放入mksqfile_newmksqfs的脚本命令行如下:chmod -R 777 $1rm -rf $2*mksquashfs $1 $2.temp./encryption $2.temp $2 e toolchmod 777 $2rm -rf $2.temp命令行原理:先对传递进来的一个参数,也就是文件夹进行权限升级到最高,然后调用mksqua...原创 2018-04-09 15:29:22 · 1679 阅读 · 0 评论 -
Android编译系统执行文件步骤
1.首先登入linux系统把权限升到root才能编译,不然后面会报错没有那个权限,命令为:sudo -s2.然后进去到脚本所在的当前路径,我的路径为root@vtech:/mnt/sdc1/he0809/rk/20180105_1102/git-InnoTab_3in1# 3.再配置安卓的编译环境,如果不记得命令在 makeimage_LOG_SU_PIANO.sh的脚本中有命令参照 然后执行...原创 2018-04-09 15:12:08 · 345 阅读 · 0 评论 -
java写服务端,c语言写客户端双机通信
我一个同学说c语言写的客户端并不能与java写的服务端通信,因为没有端口,这让我很尴尬,按道理本机与虚拟机通信,我在客户端里面写进去虚拟机的ip地址然后指定开一个端口就可以相互通信了,好歹也是学嵌入式的,所以我写了一个试试,初学小白,请多指教。 下面看代码,首先是C语言的客户端:#include #include #include #include #include原创 2016-08-24 09:13:48 · 1028 阅读 · 0 评论