自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (3)
  • 收藏
  • 关注

转载 Qt的简易日志库实现及封装

Qt的简易日志库实现及封装用于QT的一个简易日志功能模块封装。算不上强大和多高的性能,但是足够简单小巧。用于记录日志到文件够用了。单独的一个文件模块,使用时直接引入源码。想要其他功能,直接改代码即可。C++的下的日志库有很多,如log4cpp、Easylogging++,eplog,g3log,Qt下也有log4qt。还有简单小巧的QsLog,它是一个基于Qt的轻量级开源日志库。

2023-11-29 17:06:09 314

转载 BMS系统架构

BMS系统架构

2022-08-30 15:55:30 2915

转载 热失控软件控制策略

热失控软件控制策略

2022-08-30 15:49:14 615

转载 高频使用的滤波算法

高频使用的滤波算法

2022-08-30 15:46:41 1792

转载 新能源高级别故障-热失控

热失控

2022-08-30 15:43:41 4217 1

转载 嵌入式工程师常用的宏定义

嵌入式工程师常用的宏定义

2022-07-25 10:40:46 151

转载 CMake 入门实战

CMake 入门实战

2022-07-16 15:28:12 145

转载 嵌入式系统如何进行测试?

首先,质量是设计出来的,而不是测试出来的。我先说一些我的一些经验,之后想扩展到“嵌入式系统如何保证软件质量?”的问题。因为测试只是方法,质量才是目的。解决问题的思路有如下几个很多情况下不可能完全实现自动化测试或者成本太高,那么就通过 减少进行一次完整测试所用的时间和资源,提高人工测试的效率 将可自动测试的部分从整体中分离出来独立测试,剩下的人工测试 将整个系统分解为多个子系统进行独立的测试 将系统分解为设备相关和设备无关分开测试 设备无关的部分做自动化测试 设备相关的部分人

2022-05-18 16:26:52 4168

转载 git重要基本概念

git重要基本概念1.git的工作目录下面的所有文件又分为两种情况:已跟踪和未跟踪。已跟踪:就是你曾经提交过文件或直接从Git仓库克隆下来的那些文件,也就是说对一个新创建的文件进行第一次git的添加,这样文件就有了快照记录后,这文件就转变成已跟踪状态了。 未跟踪:就是新创建的文件没添加过一次,没有之前的快照记录。这两种文件状态和暂存区的关系如图:2.git内目录(这里指的是已跟踪的目录)有三种状态:提交状态:如果是 Git 目录中保存着的特定版本文件,也就是说将暂存区的文件提交到仓库中,就属

2022-02-09 16:33:01 641

转载 RT-thread分析自动初始化机制

首先全局搜索一个任意的自启动宏,便能找到在rtdef.h中由如下定义#define INIT_BOARD_EXPORT(fn) INIT_EXPORT(fn, "1")/* pre/device/component/env/app init routines will be called in init_thread *//* components pre-initialization (pure software initilization) */#define INIT

2021-12-14 11:20:06 355

原创 一个经典的单片机供电电路

电路的原理图如下图所示:在电路上电之前。开关"TEST"断开,单片机也没有通过VCC加电。此时,T1的基极通过R9(100k)接地,处于截止状态。T3的基级电阻R7所连接的Test,T1都处于截止状态,所以T3也处于截止状态。电源+9V被T3隔离,没有加载稳压芯片IC2上,IC2的输出VCC保持低电平。▲ 电路关闭状态按动按钮“TEST”启动电路,T3的基极通过R7,Test,T2的b-e接地,从而使得T3导通。此时+9V通过T3加到IC2稳压芯片。IC2输出VCC是加到单.

2021-11-19 16:40:11 2437

原创 CRC16

CRC选择当数据帧长度在8bits-128bits范围内时,推荐CRC-8(CRC-8能够减少额外比特的开销,且有更好的性能表现)当数据帧长度在128bits-2048bits范围内时,推荐CRC-12,CRC-16,CRC-CCITT(CRC-12额外比特的开销更小,且用于6bit字符流的传输;对于16bits的标准,更推荐美国标准CRC-16,性能略优于CRC-CCITT);当因数据帧长度更长、信道不稳定等情况而需要更高的性能时,CRC-32、CRC-32C将是更好的选择;CRC简介CR

2021-08-02 17:17:01 2987

转载 USB、UART、SPI等总线速率

USB总线 USB1.1:——-低速模式(low speed):1.5Mbps——-全速模式(full speed): 12MbpsUSB2.0:向下兼容。增加了高速模式,最大速率480Mbps。——-高速模式(high speed): 25~480MbpsUSB3.0:向下兼容。——-super speed :理论上最高达4.8Gbps,实际中,也就是high speed 的10倍左右。 UART RS232:传输速率一般不超过20Kbps,速率低,抗干扰能力差,RS-232..

2021-06-05 16:09:59 3989

转载 存储相关知识SRAM、DDR4、Quad SPI、Flash、eMMC闪存的介绍与区别

标准SPI标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, misoDual SPI它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让它们工作在半双工,用以加倍数据传输。也就是对于Dual SPI Flash,可以发送一个命令字节进入dual mode,这样mosi变成SIO0(serial io 0),mosi变成SIO1(serial io 1),这样一个时钟周

2021-06-05 15:02:59 4709

转载 如何在终端和 PowerShell 中将连续执行命令和一个命令自动重复执行多次

1、在命令行中,我们经常会使用cmd1 && cmd2这样的表达式衔接多条命令,表示如果cmd1执行成功则继续执行cmd2。但是同样的运算符(&&)在PowerShell中却不行。这其实是个简单的语法问题……通过查资料,原来PowerShell有自己的表达方式:-and和-or-and: 左侧命令执行成功(返回true)才继续执行右侧命令-or: 无论左侧命令是否(返回false)都会继续执行右侧命令示例:# Bashcd / && ls

2021-02-20 14:30:24 2561

转载 C/C++混合编程中“#ifdef __cplusplus与extern “C“ { #endif” 的理解

在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒体播放等都是C++下的,他需要调用JRTPLIB库,所以,很多时候,C++还是蛮不错的。。。。但,*.c与*.cpp文件混搭在一起,不是那么的简单。 #ifdef __cplusplus //c++编译环境中才会定义__cplusplus(plus就是"+"的意思),如果是c++程序,肯定会有__cplusplu...

2021-02-19 17:47:45 547

转载 基于ceedling的软件单元测试(windows)

依赖工具的安装安装rubyhttps://rubyinstaller.org/downloads/ 安装msys2 到网站http://www.msys2.org/下载适合自己主机的安装包,点击安装,在msys2安装完成后使用其内置的pacman包管理器,安装gcc, make,将C:\msys64\usr\bin添加到环境变量中。pacman -S gccpacman -S make安装gcovrpip install gcovr安装测试工具gem install c.

2021-02-06 17:13:19 547

原创 如何使用CMake生成makefile

1、安装了CMake工具2、编写CMakeLists.txt文件子目录:include、src、build(因为生成的文件很多,所以新建一个build文件夹)例子(放在build文件夹里):#1.cmake verson,指定cmake版本cmake_minimum_required(VERSION 3.2)# CMakeLists.txt使用C++11标准add_definitions(-std=c++11)#2.project name,指定项目的名称,一般和项目的文件夹名

2021-02-05 20:49:20 1809

转载 Unity C 语言单元测试的构建工具 Ceedling 使用详解

1. 安装 Ceedling展开目录安装 Ceedling 之前,首先需要下载安装Ruby(版本号大于 1.8.6) 和TDM-GCC,安装完成后,即可安装 Ceedling ,打开系统命令行,输入 gem install ceedling 等待直至出现 Successfully installed ceedling-0.28.2 Parsing documentation for ceedling-0.28.2 Done insta...

2021-02-05 15:16:28 874

转载 Windows 下搭建 MSYS2+CMake+VSCode+gdb 编译调试环境

windows 下部署 vscode 的 c++ 调试环境给raspberrylive项目写的,可能有多余步骤安装msys2官网下载安装包中国大陆地区去清华镜像下载安装包和配置软件源:MSYS2 镜像使用帮助环境变量根据自己的安装路径修改MSYS_DIR=C:\msys64MINGW64_DIR=C:\msys64\mingw64Path添加: %MSYS_DIR%\usr\bin;%MINGW64_DIR%\binLogCOPY源改成国内的参考h..

2021-02-05 09:50:17 1635

转载 Ubuntu18的bug导致系统启动后黑屏

问题背景使用系统Ubuntu 18.04.1 LTS(可以通过sudo lsb_release -a命令查看当前使用的系统版本)Linux内核版本(使用uname -a或-l 或-r查看):问题描述Ubuntu系统很久没有关机,某次重启电脑时,可以看到Ubuntu启动项,并且系统正常启动,但是启动后屏幕始终黑屏,无法进入桌面问题定位内核问题?我在使用期间更新过3次内核版本...

2021-01-12 14:44:24 847

转载 Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)

在文件管理器里面按Ctrl+H即可显示(显示为.bashrc,前面小点儿表示隐藏文件)一、下载arm-linux-gcc 5.4.0包下载(百度云)链接:https://pan.baidu.com/s/1AeqzkboWkJDJjU9HxtXhrA提取码:uzup二、在/usr/local目录下新建arm文件夹,并且给予最高权限后进入新建的文件目录里面root@nandyco...

2021-01-12 14:44:05 582

转载 C语言之 const 和 volatile

在 C 语言中,我们经常会见到const和volatile这两个关键字,那么我们今天就来介绍下这两个关键字。先来介绍const关键字。提起const关键字,我们可能首先想到的是经过它修饰的变量便是常量了。其实我们这种想法是错误的,其实const修饰的变量是只读的,其本质还是变量。它修饰的局部变量是在栈上分配空间的,它修饰的全局变量在全局数据区分配空间(...

2021-01-12 14:43:14 1386

转载 基于cmake的交叉编译工具链

基于cmake的交叉编译工具链本文转载自:https://segmentfault.com/a/1190000019276315,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。一、基本概念1. 什么是交叉编译交叉编译是A机器上编译生成,运行在B机器上。两个机子有不同的机器指令。2. 什么是宿主机和目标机宿主机(host)是指使用交叉编译工具链执行编译的主机,一般配置较高,如PC主机;目标机(target)是指运行交叉编译出的可执行程序的机器,一般资源有限,如嵌入式开发

2021-01-12 14:41:42 2885

转载 C语言字节对齐问题详解

转载原文连接:https://www.cnblogs.com/clover-toeic/p/3853132.htmlC语言字节对齐问题详解 引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。...

2020-11-10 18:16:51 629

转载 Doxygen代码注释文档产生工具使用

1.Doxygen简介Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间。当然这里程序中的注释需要遵循一定的规则书写,才能让Doxygen识别和转化。目前Doxygen可处理的程序语言包含C/C++、Java、Objective-C、IDL等,可产生出来的文档格式有HTML、XML、LaTeX、RTF等,此外还可衍生...

2020-04-28 14:03:22 524

原创 使用Ceedling进行单元测试(嵌入式)C应用程序

使用Ceedling进行单元测试(嵌入式)C应用程序https://dmitryfrank.com/articles/unit_testing_embedded_c_applications就像许多其他嵌入式软件工程师一样,我过去常常将嵌入式应用程序交付生产,而没有对其进行适当的测试。仅进行了一些手动测试。我给人的印象是没有真正的方法可以对其进行测试:您知道,嵌入式应用程序在自定义硬件中...

2020-03-24 20:01:55 1609

转载 Linux 系统基础知识

本文包括:1、Linux 系统概述2、Linux 用户和用户组管理3、Linux 文件和目录管理4、Linux 文件系统管理5、Linux LVM 配置6、Linux 网络管理7、Linux 进程与任务管理8、Linux 系统监控9、Linux 管道与I/O重定向10、Linux 安装与管理软件1、Linux ...

2020-01-09 15:37:32 186

转载 嵌入式字 符设备驱动程序demo

一、主设备号和次设备号主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核用dev_t类型()来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。在实际使用中,是通过中定义的宏来转换格式。(dev_t)-->主设备号、次设备号 MAJOR(dev_t dev) MINOR(dev_t dev) 主设备...

2020-01-09 14:57:50 240

转载 Makefile速查笔记

做 Linux C++,一个稳定的工程,Makefile 是很少改动的。但是如果需要修改的时候,Makefile 的语法和用法一时半会就回忆不出来(原谅我记忆力差……)。在此把自己以前的 Makefile 学习笔记记录一下吧,也作为分享。本文假设读者已经懂得了 Makefile,因此主要是作为备忘和速查用。全文中尖括号部分表示变量。本文地址:https://segmentfault.com/a...

2019-12-31 10:45:03 96

转载 嵌入式Linux开发环境搭建

1、前提准备硬件环境: 笔记本电脑 软件环境: 裸机安装Windows10_64位 VMWare版本:VMWare WorkStation 14Pro Ubuntu版本:Ubuntu16.04LTS总结:开发环境是主机安装windows10家庭版,然后使用vmware创建Ubuntu虚拟机,在windows10进行代码的编写开发,在Ubuntu上进行部署编译。具体安装创建方法...

2019-12-23 11:31:16 234

转载 Ubuntu 18.04安装SFTP服务

1.安装sftp服务sudo apt-get install openssh-server2.修改配置文件vim /etc/ssh/sshd_config##下面这行注释掉#Subsystem sftp /usr/libexec/openssh/sftp-server##后面加入Subsystem sftp internal-sftp找到PermitRootLogin no...

2019-12-20 11:29:29 879

转载 ubnuntu 18.04提示无libmpfr.so.4

问题描述:使用arm-linux-gcc 编译.c文件时提示错误error while loading shared libraries:libmpfr.so.4: cannot open shared object file: No such file or directory.通过ldd查看cc1的库调用情况root@ly-virtual-machine:/usr/local/li...

2019-12-14 15:42:05 1406

转载 linux下常用的开源库

linux下常用的开源库名字及简介,使用文档和教程可以自己百度 (自己整理,不定时完善)SQLiteSQLite是一款轻型的数据库。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。源码地址:http://www.sqlite.org/libnetlibnet是一个小型的接口函数库,主要用C语言写成,...

2019-12-10 15:23:20 403

转载 基于JavaMail的Java邮件发送

JavaMail API的简单介绍各个类的关系与操作流程:1、创建一个 Properties 对象,该类在 java.util 包中,以键-值对的形式设置邮件发送中需要用到的传输协议,如 SMTP 协议等;一般的 smtp 服务器都需要用户身份认证,所以这也要设置为 true ,以便向 smtp 服务器提交用户名、密码等信息;2、先使用 Ses...

2019-12-04 13:09:37 87

原创 C语言运算优先级记忆口诀

口诀:括号成员排第一; //括号运算符[]() 成员运算符. ->全体单目排第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&、逻辑非!、按位取反~、sizeof后有乘除余加减; //包括 /、*、%、+、-移位五,关系六; //移位运算符:<< &...

2019-12-04 13:08:54 344

原创 Ubuntu 18.04 LTS设置root账户

一、安装Ubuntu 18.04.1 LTS可能出现Ubuntu18的bug导致系统启动后黑屏的问题解决方法sudo apt-get remove --purge nvidia-* # 卸载nvidia相关组件sudo apt purge gdm gdm3 # 卸载gdm和gdm3sudo apt install gdm3 ubuntu-desktop # 重新安装gdm3sy...

2019-12-04 13:07:39 746

转载 深入理解C指针

深入理解C指针<一>指针和内存 C程序在编译后,会以三种形式使用内存: 静态、全局内存:静态变量和全局变量使用这部分内存,生存周期为整个程序运行时,全局变量所有函数都可以访问,但静态变量虽然生存周期为整个程序运行时,但作用域和局部变量是一样的,只限于定义它的函数内部,全局变量和静态变量会执行默认初始化。 自动内存,也就是所说的栈上,局部变量,在函数内部声明,并且只有函数...

2019-09-24 15:27:56 134

原创 Android UI 设计参考资源

Android UI 设计参考资源http://www.jcodecraeer.com/plus/list.php?tid=31&TotalResult=1328&PageNo=1

2017-04-06 15:35:30 471

转载 Android App的设计架构:MVC,MVP,MVVM与架构经验谈

原文出处:https://www.tianmaying.com/tutorial/AndroidMVC和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计:我的App需要应用这些设计架构吗?MVC,MVP等架构讲的是什么?区别是什么?本文就来带你分析一下这几个架构的特性,优缺点,以及App架构

2017-02-20 14:59:12 374

基于STM32的IAP(InApplicationProgramming)设计

IAP即在应用编程,IAP是用户自己的程 序在运行过程中对UserFlash的部分区域进行烧写,目的是为了在产品发布后 可以方便地通过预留的通信口对产品中的固件程序进行更新升级。该文档对基于STM32的IAP设计介绍的非常详细。

2016-02-26

STM32固件库使用手册的中文翻译版

用户手册 32 位基于 ARM 微控制器 STM32F101xx 与 STM32F103xx 固件函数库,对每一个函数都进行了详细的说明,内容详实,适合初学者参考使用.

2016-02-24

汇编语言大全,学习汇编可以更了解计算机的基本组成

汇编语言是计算机专业中一门重要的基础课程,是一种面向机器的低级语言。学习汇编可以更了解计算机的基本组成。

2012-10-26

空空如也

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

TA关注的人

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