嵌入式
天问XUiRH
叶子的离去是风的追求还是树的不挽留
展开
-
单片机固件中加入“版本信息”的方法
平时我们写程序,通常都会备注软件版本,那么,怎么在单片机中保存版本信息呢?方法其实有很多,但基本原理都是在指定存储区域(Flash)中写入软件版本信息。实现方法下面就分享一个最常用,也是最基础的小技巧:在Keil MDK环境下,通过软件代码,直接映射到并存储到Flash指定地址。包含:软件版本、编译日期、编译时间,代码如下:#define VERINFO_ADDR_BASE (0x0800FF00) //存放FLASH的地址const char Software_Ver[] __attrib原创 2022-04-06 21:07:49 · 1743 阅读 · 2 评论 -
环形块队列解决不定长数据包缓存处理
原创 2021-07-16 08:37:12 · 301 阅读 · 0 评论 -
关于窗口消息用法的笔记
1.窗口延时现象描述:如果需要在某个窗口执行完任务后延时,不要在当前窗口建立定时器延时,在当前窗口建立定时器时当前窗口仍为活动窗口,WM_REFRESH如果有任务仍在刷新,要注意,问题的根源很有可能出现在这里,如果WM_REFRESH没有任务则一切正常,如果有则很有可能出现问题。解决方案:新建一个窗口winDelay处理延时,避免当前窗口刷新为动作窗口刷新任务引发不必要的问题2....原创 2019-07-02 16:20:03 · 106 阅读 · 0 评论 -
C语言的宏定义技巧
1.防止头文件重复包含#ifndef COMDEF_H#define COMDEF_H //头文件内容#endif2.重定义类型,可以用宏或者typedef,推荐后者#ifndef BYTE #define BYTE unsigned char#endif#ifndef CHAR #define CHAR char#endif#ifndef WORD #define WORD unsigned short int#endif#ifndef INT16 #defin原创 2021-07-12 16:22:51 · 671 阅读 · 0 评论 -
LastByteAcked使用技巧
原创 2021-06-30 23:04:12 · 114 阅读 · 0 评论 -
基于双向链表的窗口消息管理框架
Manager.h#ifndef __MANAGER_H#define __MANAGER_H#include "rtdef.h"//Manager所需的参数#ifdef MAIN#define VAR_RANGE#else#define VAR_RANGE extern #endif#define configUSE_OPENWINDOW_LOG 0 //0 打开窗口不打印日志 1打开窗口打印日志#define configUSE_CLOSEWINDOW_LOG 0原创 2021-06-02 23:15:58 · 284 阅读 · 3 评论 -
支持标准Modbus的下位机程序
上位机如触摸屏采用ModbusRTU或ModbusTCP通讯协议与下位机如单片机通过串口或网络通信时,需要解析上位机报文Modbus寄存器读写的单位是字Word,读写Map表元素长度必须为字的整数倍,同时注意使用内存下标对齐时务必注意使用内存按字对齐支持功能码03/06/100x03 读保持寄存器 设备地址 功能码 起始地址 寄存器数...原创 2020-11-25 17:38:56 · 563 阅读 · 0 评论