
TOUCH-KING
门禁之王 在孤独的路上!
基于STM32 巅峰之作
GKoSon
此人不懒,什么都没写
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OTA计划--OTA-HEX2BIN脚本压缩BIN-本地工程配合解压代码
PC是分块做的压缩每4K压缩一次 压出来的结果是3000左右我要对应的去加压 如下图困难在于 我去读出来不方便!换一个思路 把驱动的函数扩展出去 可以任意读!以前做过表做一个W24Q64的读函数 它可以任意地址读【目前我是要求的page起始地址】 读出数据比4096小的数组可能1--完成在一个PAGE内部搞定可能2-需要跨越2个PAGE拼出来4096v...原创 2019-12-11 15:07:30 · 261 阅读 · 0 评论 -
OTA计划--OTA-HEX2BIN脚本--再次狗尾续貂-MD5+压缩
做好BIN在后面追加MD5 文件分步压缩 追加长度#include <stdio.h>#include <string.h>#include <stdlib.h>//free#define uint8_t unsigned char#define uint16_t unsigned short#define uint32_t ...原创 2019-12-11 10:48:37 · 318 阅读 · 0 评论 -
STM32L471-FLASH操作-待定【据说不能逆序写入】
void test_wutianlong_chipflash(void){ ChipFlash_T *ps = &ChipFlash; ps->init(); ps->clearone(STM32_TEST_ADR); printf("ps->init()OK\r\n"); memcpy(tdata,"1234",4...原创 2019-12-09 13:40:27 · 715 阅读 · 1 评论 -
二叉树准备V5-二叉树平衡
待定https://www.cnblogs.com/ricklz/p/10016050.html原创 2019-12-09 09:39:01 · 113 阅读 · 0 评论 -
二叉树准备V3.1更新一个问题:二叉树的遍历-前面的微信文章错误很多
上图是OK的 前面的 文章err 导致理解有问题更新代码:/* 前序遍历二叉树 */int preVisitBiTree(struct BiTree * InRoot){ if(InRoot) { /* 先遍历根节点 */ printf("[%d:(%d)]-",InRoot->id,InRoot->data); ...原创 2019-12-04 11:46:22 · 143 阅读 · 0 评论 -
二叉树准备V4-二叉树完成成功
https://blog.youkuaiyun.com/e891377/article/details/88909993完成全部:#include "gtreemalloc.h" #include "stdio.h" //printf //内存池(32字节对齐)struct BiTree Treebase[MEM_MAX_NODE_CONT]__attribute__((at...原创 2019-12-04 11:45:48 · 108 阅读 · 0 评论 -
二叉树准备V3-测试二叉树的创建+查找
可以看到在SRAM真的出现了想要的树!p是右边往左边看的!#include "gtreemalloc.h" #include "stdio.h" //printf //内存池(32字节对齐)struct BiTree Treebase[MEM_MAX_NODE_CONT]__attribute__((at(0x10000800))); //SRAM内存池//目前不...原创 2019-12-03 16:04:41 · 141 阅读 · 0 评论 -
二叉树准备V2-量身定做malloc
就是管理一个数组。。。测试如下:#include "gtreemalloc.h" #include "stdio.h" //printf //内存池(32字节对齐)__align(32) struct BiTree Treebase[MEM_MAX_NODE_CONT]__attribute__((at(0x10000800))); //SRAM内存池...原创 2019-12-03 11:14:54 · 220 阅读 · 0 评论 -
二叉树准备V1-malloc
前面的硬哈希我觉得非常棒!看微信文章 说的很好 它有痛点:在插入和删除的时候麻烦!二叉树因运而生!https://mp.weixin.qq.com/s/ZT_dAmN4N3gVvvxY05Azhghttps://mp.weixin.qq.com/s/ZkXbIKWU9ldFKuP4JVBsSw 神文 !其实我的业务情况硬哈希这样很好的 这里就是练笔!我做一个1K的内存保存...原创 2019-12-02 16:56:46 · 278 阅读 · 1 评论 -
OTA计划--OTA-HEX2BIN脚本--再次狗尾续貂
自己做 追加BIN1--加入长度2--加入MD53--加入CRC【放弃】4--加密【放弃】一个脚本完成!放在最后!效果:#include <stdio.h>#include <string.h>#include <stdlib.h>//free/*所谓MD5就是给进去文件字符串啥的 给你一个摘要 结果是16个HEX或者...原创 2019-12-02 14:25:17 · 215 阅读 · 0 评论 -
硬哈希表的轮子V6.0-蓝加小试牛刀
主要就是一个接受的设计了 我做了一个流程图下图是设计的MQTT协议 下发通行组比如100个的话 总步骤就是5【现在约定每次过来20个】分步骤就是1-2-3-4-5 这样子 周期下发代码:修改通行组1定义-----------------------------其实可以放置的通信组的数目远远不是200 2048减去前面的 [11] +[11] +1+1+2+2+10 很多...原创 2019-11-28 13:32:12 · 141 阅读 · 0 评论 -
硬哈希表的轮子V5.0-完成全部逻辑
#include "hwhaxi.h"#include "ChipFlash.h"#define GRAMDATAFLAG_CNT_ADD 0X0807E000//仅仅利用前面的U32标识哈希表大小#define GRAMDATAFLAG_FLASH_ADD 0X0807E800//全部保存数据的哈希值#define GRAMDATA_FLA...原创 2019-11-27 13:59:09 · 154 阅读 · 0 评论 -
硬哈希表的轮子V4.0-基本完成全部逻辑
放进去算法测试成功进一步的比较即将开始!在V5.0完成吧!#include "hwhaxi.h"#include "ChipFlash.h"#define GRAMDATAFLAG_CNT_ADD 0X0807E000//仅仅利用前面的U32标识哈希表大小#define GRAMDATAFLAG_FLASH_ADD 0X0807E8...原创 2019-11-27 13:50:59 · 170 阅读 · 0 评论 -
FREERTOS必备知识-喂狗-死机
FREERTOS必备知识:MUST修改地方:D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\Inc\FreeRTOSConfig.h#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS();printf(">>>>>>>&g...原创 2019-11-26 17:50:47 · 2334 阅读 · 0 评论 -
抽象socket的细节-它直接返回让上层知道可以采取复位策略
int8_t socket_write(uint8_t id , uint8_t *sendData , uint16_t length , uint32_t timeout ){ int ret = GSOCKET_OK; gsockeArryType *socket = socket_read_obj(id);//绑定关系 if(!devCom-&g...原创 2019-11-26 16:08:07 · 150 阅读 · 0 评论 -
SIM800C--工程对比小结
//直接TXRX 只是发送一次然后等待 如果不用RX就直接返回即可uint8_t modesim_TXRX_L1(uint8_t *TX , uint16_t TXlen , uint8_t *RX,uint16_t *RXlen ){ uint16_t Cnt = 5000,ack=0;//50000//清空接收区+时间标识 modesim_clear();//发送数据一...原创 2019-11-22 17:41:17 · 180 阅读 · 0 评论 -
硬哈希表的轮子V3.3--分配内存
前面一样的代码如下后面我测试给单片机内存!#include <stdio.h>#include <string.h>//memset#include <stdlib.h>//free#include <stddef.h>#define uint8_t unsigned char#define uint16_t unsigned ...原创 2019-11-22 14:54:25 · 145 阅读 · 0 评论 -
SIM800C接入TCP的2个都可以
atlen = sprintf(tx , "AT+CIPSTART=%d,\"TCP\",\"%s\",%d\r\n" , id , connectip , port);atlen = sprintf(tx , "AT+CIPSTART=%d,\"TCP\",\"%s\",\"%d\"\r\n" , id , connectip , port);//成功:SIM send :AT+CIPS...原创 2019-11-22 10:34:56 · 544 阅读 · 0 评论 -
硬哈希表的轮子V3.2--基于前面练习这里开始做结构体的排序和查找
修改基础的数组为结构体 开始测试成功同时发现V3.1的一个BUG递归的时候不能有= 有可能就是中间的 不信?你可以看我下面的测试 你有=就找不到了 其实是有的#include <stdio.h>#include <string.h>//memset#include <stdlib.h>//free#include <stddef.h...原创 2019-11-22 10:34:01 · 95 阅读 · 0 评论 -
硬哈希表的轮子V3.1--练习快速排序法
#include <stdio.h>#include <string.h>//memset#include <stdlib.h>//free#include <stddef.h>#define uint8_t unsigned char#define uint16_t unsigned short#define uint32_t un...原创 2019-11-22 10:16:17 · 169 阅读 · 0 评论 -
硬哈希表的轮子V3.0--练习快速查找-折半查询法!
微博 看到一个文章 代码有问题!/*折半查找 准备一个数组 排好序的*/int data[8]={1,2,3,4,5,6,7,8};int IterBiSearch(int data[], const int x, int beg, int last) { int mid = -1; mid = (beg + last) / 2; printf...原创 2019-11-22 10:02:23 · 150 阅读 · 0 评论 -
硬哈希表的轮子V2.0--简单版本
不在深入比较 甚至可以保持的时候不要data页面#include "hwhaxi.h"#include "ChipFlash.h"#define GRAMDATAFLAG_CNT_ADD 0X0807E000//仅仅利用前面的U32标识哈希表大小#define GRAMDATAFLAG_FLASH_ADD 0X0807E800//全部保存数...原创 2019-11-22 09:43:13 · 141 阅读 · 0 评论 -
硬哈希表的轮子V1.0
测试成功计划以后放弃有2个一样的flag值 在写入的时候把关!#include "hwhaxi.h"#include "ChipFlash.h"#define GRAMDATAFLAG_CNT_ADD 0X0807E000//仅仅利用前面的U32标识哈希表大小#define GRAMDATAFLAG_FLASH_ADD 0X0807E8...原创 2019-11-22 09:31:08 · 140 阅读 · 0 评论 -
OTA-APP最强状态机
V1.0可以一句话下载 对于W5500这种高性能模块 非常棒!V2.0一句话TX在RX这样分布下载 对于W5500也很好V3.0遇到SIM800C的问题1 一句话下载很被动 后面一直是RX等待 模块很慢也容易close2多次TX的话它的问题是你要2048字节它不会一次性给你 它给你1036+若干个 有时候104个有时候2个RX过来非常快来不及处理有时候模块给你其他数据也被...原创 2019-11-21 11:24:36 · 627 阅读 · 0 评论 -
OTA-BOOT代码优化-可以抽象一个MV函数随意操作以后上电BIN读到硬盘此后恢复出厂设置
OTA工程的思考:V1.0wo 想到设置一个U8的flag 读一读判断是不是要MV在JUMPV2.0我想到flag还不够 我希望你告诉我BIN文件的大小 这样我好知道我MV多少次V3.0我终于明白了 我最想要的就是flag 它标识MV多少次就好了 我是无脑搬运!再看OTA主要流程:上电--读标识--没有比较就直接JUMP--有必要就MV在JUMP1--JUMP--地址就是APP工程...原创 2019-11-20 12:01:30 · 511 阅读 · 0 评论 -
OTA-内部保存函数
之前的逻辑是;/*文件下载以后怎么处理这里完成-数据写到W24Q64data--过来的数组len---数组长度一般是4096如果不是那就是最后一包page--提前计算好需要从基地址偏移多少个page 其实正好是接收的数据的len/4096的结果*/static void bin_handle(uint8_t *data,uint16_t len,uint8_t page){ ...原创 2019-11-19 15:55:24 · 320 阅读 · 0 评论 -
CJS的一个问题-必须free
static void askinfo(int fd, uint8_t sn, uint16_t len, uint8_t *data) {NEVERSHOW char *outStr; char *mac=NULL,*devId=NULL,*ptype=DESIGN_DEV_TYPE,*pmodel=DESIGN_DEV_MODLE,*pcategory=DESIGN_DEV_...原创 2019-11-15 18:12:24 · 688 阅读 · 0 评论 -
模块的一个问题-0906有上限
之前我发现蓝牙模块发数据 直接发就可以它自动分包 每个20出去后来JS我发现254个OK 256个失败!也就是模块只能一次发出255个我就拦截了 计划重新设计协议 保证的家伙都在255以内今天发现我可以这样!自己分包 多次发送!!现在很简单 就是延时在发一下以后可以优化很多模块都是这样//TX打包static uint8_t bb0906_write...原创 2019-11-15 16:37:08 · 163 阅读 · 0 评论 -
OTA-BIN文件切割脚本自己和串口比较
现在看到是在18个4K以后数据不同了建立一个文件夹 吧OTA.BIN放进了 执行EXE就可以#include <stdio.h>#include <string.h>//memset#include <stdlib.h>//free#define SIZE 4096int main(int argc,char **argv){ FILE ...原创 2019-11-15 14:17:29 · 461 阅读 · 0 评论 -
SIM800C做HTTP下载的问题
每次是部分下载 如图【GET /api1/v1/packages/Entrance_Guard/Touch/e2bbbf63a5e5c182f8d1db9731b94474/OTA.bin HTTP/1.1Host: 47.103.134.150:8445Range: bytes=1024-2048】看到模块接受数据:这样就是正常的 我需要多少 模块给我多少 我要102...原创 2019-11-14 16:46:49 · 462 阅读 · 0 评论 -
HTTP下载-SIM800C部分操作-小文件可以大文件要放弃
#include "http_down.h"#include "gsocket.h"#include "gsyscfg.h"#include "gosconfig.h"#define LOG_TAG "HTTP"#include <elog.h>extern uint8_t * rxOtabuf;static uint32_t content_len=0;...原创 2019-11-14 15:08:22 · 695 阅读 · 0 评论 -
状态机死循环的设计-还是以前的好
case MQTT_CONNECT_TCP: { while ( mqtt_network_connect(&network,ipport->ip, ipport->port ) != 0)//需要用到 SOCKET通道号 { log_err("MQTT_CONNECT_TCP code from network connect fail...原创 2019-11-13 15:03:36 · 528 阅读 · 0 评论 -
OTA-2HEX的合并脚本
1--自己搞了一个文件夹 每次吧2个HEX拷贝过来执行EXE那就是不要路径#include <stdio.h> int main(int argc,char **argv){ FILE *fp1,*fp2,*fp3; char ch; int lSize=0; fp1 = fopen("BOOT.hex", "r"); fp3 = fopen...原创 2019-11-13 15:01:34 · 207 阅读 · 0 评论 -
PB-结构体-MQTT上行设计
MQTT平台主动下发指令 比如远程开门 我需要给出回答接口封装如下:1需要的参数typedef struct _TslIotProto_TSLIOTCommonResult { pb_callback_t dev_id; int32_t code; pb_callback_t message;/* @@protoc_insertion_point(struct:T...原创 2019-11-13 13:48:01 · 746 阅读 · 0 评论 -
FREERTOS-挂起任务
https://blog.youkuaiyun.com/anglebaby331/article/details/82943279#include "FreeRTOS.h"#include "task.h"extern xTaskHandle KEYTaskname;void keyboard_HW_init( void ){ uint8_t saveCmd = 0x02;...原创 2019-11-13 12:34:59 · 732 阅读 · 0 评论 -
汪汪队立大功sscanf处理url PATH-2
上传文件http://47.103.134.150:8445/api1/v1/packages/Entrance_Guard/Touch/31c2a5b9fca4dc195e510c0a09f810a4/otatest.bin这个URL可以下载简化 拿到http: 47.103.134.150:8445 api1 v1 packages Entrance_Guard Touch ...原创 2019-11-12 17:25:06 · 277 阅读 · 0 评论 -
TOUCH-KING问题研究-2
//D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\IAP-git\KEIL\MDK-ARM#include "GW24Q64.h"static G_SPIFlash_Type *flash=NULL;void GprintHEX(char *tag,void* A,uint16_t len){ printf("[%s-%d]",tag,len); for(ui...原创 2019-11-08 13:27:35 · 124 阅读 · 0 评论 -
一个灵魂错误
参数进来 因为是全局的我把自己格式化了人在囧途啊!测试:#include <stdio.h>#include <string.h>typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;uint8...原创 2019-11-07 17:18:12 · 130 阅读 · 0 评论 -
TOUCH-KING问题研究
//D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\IAP-git\KEIL\MDK-ARM#include "GW24Q64.h"static G_SPIFlash_Type *flash=NULL;void GprintHEX(char *tag,void* A,uint16_t len){ printf("[%s-%d]",tag,len); for(ui...原创 2019-11-07 17:01:42 · 142 阅读 · 0 评论 -
TOUCH-KING问题总结-已经好了
一定要认真原创 2019-11-07 14:00:46 · 117 阅读 · 0 评论