自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(410)
  • 资源 (23)
  • 收藏
  • 关注

原创 [C++11 多线程异步] --- std::promise/std::future

future >头文件功能允许对特定提供者设置的值进行异步访问,可能在不同的线程中。这些提供程序(要么是promise 对象,要么是packaged_task对象,或者是对异步的调用async与future对象共享共享状态:提供者使共享状态就绪的点与future对象访问共享状态的点同步。

2022-10-05 20:31:23 115

原创 [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】

执行结果如下:这里程序段本意是消费者线程阻塞,等待生产者生产数据后去通知消费者线程,这样消费者线程就可以拿到数据去消费。在consumer线程中sleep 1s,让生产者线程先执行,并通过notify_all通知消费者线程;此时消费者线程并没有执行到wait语句,也即消费者线程没有处于挂起状态,线程没有等待此条件变量上,通知信号就丢失了;1s后消费者线程再执行wait处于等待状态时,生产者不会再触发notify,消费者线程会一直阻塞。

2022-10-05 19:56:38 184

原创 [C++11 多线程同步] --- 条件变量

std::condition_variable 的拷贝构造函数被禁用,只提供了默认构造函数。与 std::condition_variable 类似,只不过 std::condition_variable_any 的 wait 函数可以接受任何 lockable 参数,而 std::condition_variable 只能接受 std::unique_lockstd::mutex类型的参数,除此以外,和 std::condition_variable 几乎完全一样。

2022-10-05 19:55:59 269

原创 [C++11 多线程同步] --- 互斥锁

互斥锁在有些资料中也被称之为互斥量,二者是一个东西。互斥锁是一种简单的加锁的方法来控制对共享资源的访问。只要某一个线程上锁了,那么就会强行霸占公共资源的访问权,其他线程试图访问资源会被阻塞,直到这个线程解锁了。互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。

2022-10-04 21:38:58 9

原创 [C++11 多线程同步] --- 线程同步概述

多线程并发执行时有很多同学捋不清楚调度的随机性会导致哪些问题,要知道如果访问临界资源不加锁会导致一些突发情况发生甚至死锁。

2022-10-04 21:38:28 207

原创 git --- git撤销commit(未push)

我们在git仓库写完代码后,一般有如下操作:git add .正常的下一部操作是git push,但是实际项目中会出现两种情况导致无法push1> 在执行git push之前我们发现刚才添加的内容是错误的2> push之后,需要别人review,别人review的时候发现你是错误的代码,拒绝merge这两种情况都要求撤销commit。

2022-10-04 21:37:42 198

原创 vscode配置clang-format自动格式化代码

全局搜setting.json,看着哪个像,找到对应的设置文件,我的是~/.config/Code/User/settings.json ,里面改成。.clang-format文件如下,这样每当修改文件保存时,就会依据.clang-format中规定的格式自动格式化代码。打开首选项设置(ctrl + ,),搜索format ,勾选format on save 自动保存。

2022-09-11 14:37:33 27

原创 Ubuntu下更换gcc版本

背景:今天遇到一个编译错误问题,最后定位发现是gcc/g++版本不对,所以这里记录一下如何在ubuntu下安装多个gcc/g++版本。方法二:下载gcc tar包,源码安装。将现在需要的g++版本做个软连接。删除之前系统默认的g++软链接。方法一: apt源安装。

2022-09-11 14:36:12 86

原创 [C++11] --- 移动语义和完美转发

拷贝构造函数和拷贝赋值函数区别?拷贝构造函数和拷贝赋值函数都是,使用a对象去初始化另一个a1对象若a1对象未实例化,则调用拷贝构造函数若a1对象已初始化,则调用拷贝赋值函数其中拷贝构造函数有三种调用方式,效果都都一样拷贝构造函数和移动构造函数的区别函数形参类型不同:拷贝构造函数形参类型为 &(左值引用)移动构造函数形参类型为 &&(右值引用)函数中操作不同:拷贝构造函数是先将传入的参数对象进行一次深拷贝,再传给新对象。有一次拷贝对象的开销。......

2022-08-28 17:12:14 255

原创 [UML] --- 类图

类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法类图中的“类”与面向对象面向对象面向对象语言中的“类”的概念是对应的,它用来描述系统中的有意义的概念,包括具体的概念、抽象的概念、实现方面的概念等,是对现实世界中的事物的抽象。类图是其它图的基础。我们可以在类图的基础上,使用状态图、协作图、组件图和配置图等。类图的主要作用有:(1)对系统的词汇进行建模(2)对简单的协作进行建模(3)对逻辑数据库模式进行建模类图主要由类、接口和各种关系组成。关系

2022-06-12 14:31:59 467

原创 [UML] --- vscode中配置plantuml

1> java下载链接:2> 安装完成后配置环境变量3> 验证java环境是否配置好2 安装graphviz1> java下载链接:2> 安装完成后配置环境变量3> 验证java环境是否配置好3 安装vscode1> 在vscode中安装graphviz preview、plantuml插件2> 在vscode中新建文件,然后按住Alt + D验证...

2022-06-12 14:31:40 329

原创 [ros] --- 配置ros主从机

ROS支持多机互通,可以设置一台主机,多台从机,主机中运行roscore,启动master节点,从机直接运行其他节点,在配置好的机器之间就可以互相通信了,就像在同一台机器上一样。具体应该如何配置呢?详细步骤如下:1、IP设置一个主机,多个从机,每个先都设定为同一网段下固定IP。2、修改~/.bashrc文件主从机都需要修改~/.bashrc文件,添加以下内容:主机中添加:从机中添加:注意,在这里的ROS_MASTER_URI指明的是作为主机的IP,因此主机从机这里要设置为一致的IP,另外最好加

2022-06-11 12:43:04 570

原创 [C++11 模板的改进] --- 可变参数模板

C++11之前,类模板和函数模板只能含有固定数量的模板参数,C++11增强了模板功能,允许模板定义中包含0到任意个模板参数,这就是可变参数模板。可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,申明可变参数模板时需要在typename或class后面带上省略号 “…”一个可变参数模板函数的定义如下:1.2 参数包的展开1.2.1 递归方式展开通过递归方式展开函数包,需要提供一个参数包展开函数和一个终止递归函数。1.2.2 非递归方式展开递归函数展开参数包是一种标准做法,也比较好理解,但也

2022-06-05 14:20:15 49 1

原创 [C++11 模板的改进]

看一段示例代码:2 函数模板的默认模板参数C++11之前,类模板支持默认模板参数,但是不支持函数模板的默认模板参数。类模板的默认模板参数必须是从右往左定义,函数模板的默认模板参数则没有这个限定:...

2022-06-05 13:56:06 25

原创 [C++11 类的改进] --- 继承控制:final和override

C++11之前一直没有继承控制关键字,禁用一个类的进一步衍生比较麻烦,C++11添加了两个继承控制关键字,final和overridefinal关键字有两个作用:2 override关键字override关键字确保在派生类中声明的函数跟基类的虚函数有相同的签名。如果不加override,在子类中写virtual int func(int b) override这个函数的时候,可以会将参数写错或写漏,这样就不是重写,就是子类覆盖父类的函数。加上override保证子类与父类有相同的签名。...

2022-06-05 13:22:13 75

原创 [C++11 类的改进] --- 继承构造函数和委托构造函数

C++11 中提供的继承构造函数可以让派生类直接使用基类的构造函数,而无需自己再写构造函数,尤其是在基类有很多构造函数的情况下,可以极大地简化派生类构造函数的编写。先来看没有继承构造函数之前的处理方式:在子类中初始化从基类继承的类成员,需要在子类中重新定义和基类一致的构造函数,这是非常繁琐的,C++11 中通过添加继承构造函数这个新特性完美的解决了这个问题,使得代码更加精简。继承构造函数的使用方法是这样的:通过使用 using 类名::构造函数名(其实类名和构造函数名是一样的)来声明使用基类的构造函数,

2022-06-05 13:21:57 33

原创 [C++11] --- 易用性改进

关于 C++ 中的变量,数组,对象等都有不同的初始化方法,在这些繁琐的初始化方法中没有任何一种方式适用于所有的情况。为了统一初始化方式,并且让初始化行为具有确定的效果,在 C++11 中提出了列表初始化的概念。Note: 在初始时,{} 前面的等号是否书写对初始化行为没有任何影响列表初始化的好处:防止类型收窄看一段示例代码:在C语言中可正常编译并运行,只是b的值为0但是在C++中,如果采用列表初始化的方式对b进行初始化,编译器会报类型收窄的错误2 基于范围的for循环C++98/03 中普通的

2022-06-05 13:21:38 40

原创 [C++11 类的改进] --- 继承控制:=default和=delete

在 C++ 中声明自定义的类,编译器会默认帮助程序员生成一些他们未自定义的成员函数。这样的函数版本被称为” 默认函数”。这样的函数一共有六个:有时程序员会忘记上面提到的规则,最常见的是声明了带参数的构造,如果还需要无参构造函数,这时候必须定义出不带参数的版本。不过通过编译器的提示,这样的问题通常会得到更正。但更为严重的问题是,一旦声明了自定义版本的构造函数,则有可能导致我们定义的类型不再是 POD 类型,我们便不再能够享受 POD 类型为我们带来的便利。对于上面提到的这些,我们无需过度担心,因为 C++11

2022-06-05 13:21:14 61

原创 GNU profiler(gprof)使用

1 gprof简介如果没有测试工具可以使用,改进应用程序的性能是非常难做的,因为究竟程序中是哪些函数消耗掉了大部分执行时间、又有哪些函数的调用次数最多。 (ps:调用次数最多不一定就最耗时)通常很难给出结论。GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof)。gprof 可以为Linux平台上的程序精确分析性能瓶颈。 可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“call graph”(调用图), 包括函数的

2022-05-18 20:08:24 94

原创 使用cmake与makefile调试需要指定的参数[GDB与Gprof参数]

makefile与cmake使用GDB需要指定的参数1 在makefile中使用GDB在makefile中添加-g参数即可g++ -pg -o test test.cpp2 在cmake中使用GDB在linux环境下通过设置编译选项CXXFLAGS使程序可以支持GDB调试,在CMake构建的工程中也可以方便的实现。对于C++:在CMakeLists.txt文件中添加如下语句:SET(CMAKE_BUILD_TYPE "Debug")SET(CMAKE_CXX_FLAGS_DEBUG "$

2022-05-18 18:29:51 352

原创 [ros robot] --- 机器人系统仿真

1 机器人系统仿真概念机器人系统仿真:是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。2 机器人系统仿真相关组件机器人的系统仿真是一种集成实现,主要包含三部分:URDF 用于创建机器人模型Gzebo 用于搭建仿真环境Rviz 图形化的显示机器人各种传感器感知到的环境信息三者应用中,只是创建 URDF 意义不大,一般需要结合 Gazebo 或 Rviz 使用,在 G

2022-05-11 13:08:28 269

原创 [ROS常用组件] --- rqt工具箱

1 认识rqt概念:ROS基于 QT 框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt作用:可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验。组成:rqt 工具箱组成有三大部分rqt——核心实现,开发人员无需关注rqt_common_plugins——rqt 中常用的工具套件rqt_robot_plugins——运行中和机器人交互的插件(比如: rviz)2 rqt常用插件:rqt_graph简介:可视化显示计算图启动

2022-05-11 13:08:14 283

原创 [ROS常用组件] --- rosbag

1 认识rosbag概念:是用于录制和回放 ROS 主题的一个工具集。作用:实现了数据的复用,方便调试、测试。本质:rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。2 rosbag使用_命令行需求:ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放实现:1.准备创建目录保存录制的文件mkdir ./xxx

2022-05-11 13:08:01 365

原创 [ROS基础] --- TF坐标转换

1 TF坐标转换概念tf:TransForm Frame,坐标变换坐标系:ROS 中是通过坐标系统开标定物体的,确切的将是通过右手坐标系来标定的。TF左边转换作用:在 ROS 中用于实现不同坐标系之间的点或向量的转换。说明在ROS中坐标变换最初对应的是tf,不过在 hydro 版本开始, tf 被弃用,迁移到 tf2,后者更为简洁高效,tf2对应的常用功能包有:tf2_geometry_msgs:可以将ROS消息转换成tf2消息。tf2: 封装了坐标变换的常用消息。tf2_ros:为tf2提

2022-05-11 13:07:43 320

原创 编译开源库指定安装路径的几种方法

当我们从github中下载一个开源软件(或者库),移植到别的平台时候,通常需要指定安装路径针对cmake管理的工程cmake -DCMAKE_INSTALL_PREFIX:PATH=/xxx ...针对makefile管理的工程,通常需要四步./autogen.sh(有的工程没有这种自动配置脚本)./configuremakemake install 有以下几种方法可以指定安装路径:1> 执行configure文件时指定安装目录:./configure --prefi

2022-04-28 18:51:18 216

原创 error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file

gdb 调试时出现error while loading shared libraries cannot open shared object file的问题。系统找不到该libraries 。解决办法:1、将libraries 所在的目录加到/etc/ld.so.conf中2、执行/sbin/ldconfig –v

2022-04-13 10:08:25 620

原创 ros::spin ros::spinOnce使用细节

1 ros::spin()代码示例Person.msgstring nameuint8 ageuint8 sexuint8 unknown = 0uint8 male = 1uint8 female = 2person_publisher.cpp#include <ros/ros.h>#include "learning_topic/Person.h"int main(int argc, char **argv){ // ROS节点初始化

2022-04-11 22:10:17 208

原创 [ROS基础] --- 创建工作空间

0 引言我们在windows下使用集成IDE创建工程的时候,是不需要自己手写cmake/makefile去管理工程的,但是在linux下新建c/cpp项目的时候,在创建文件夹的时候,就需要想好文件的层级结构,以及手动编写cmake/makefile管理工程。在linux下怎么创建ros项目呢?我个人理解,ros相当于一个集成的IDE,我们用对应的指令去创建项目的时候,系统会自动生成管理项目的cmake文件。1 ROS文件系统在介绍怎么创建ros项目之前,先要理解ROS文件系统的相关概念。ROS文

2022-04-11 22:09:39 1687

原创 [ROS通信机制] ---话题通信

1 话题通信模型话题通信模型涉及三个角色,如下图所示:ROS master : 管理者Talker / Publisher :发布者Listener / subscriber :订阅者ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listener 订阅。2 话

2022-04-11 22:09:18 86

原创 [ROS通信机制] ---话题通信之自定义msg类型

0 自定义msg引入背景在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息… std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型.1 自定义msg类型1> 定义msg文件功能包下新建msg文件夹,添加

2022-04-11 22:08:50 118

原创 [ROS通信机制] --- 服务通信

1 服务通信理论模型服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色:ROS master(管理者)Server(服务端)Client(客户端)ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client ,帮助 Server 与 Client 建立连接,连接建立后,Client 发送请求信息,Server 返回响应信息。整个流程由以下步骤实现:0> Server注册Server 启动后,会通过

2022-04-11 22:08:15 112

原创 [C++11]中 =delete和=default

1 =delete作用于普通函数C++11中,当我们定义一个类的成员函数时,如果后面使用"=delete"去修饰,那么就表示这个函数被定义为deleted,也就意味着这个成员函数不能再被调用,否则就会出错#include <cstdio>class TestClass{public: int func(int data)=delete;};int main(void){ TestClass obj; obj.func(100); return

2022-04-11 22:07:39 263

原创 [ROS通信机制] --- 参数服务器

1 参数服务器理论模型参数服务器实现是最为简单的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (参数设置者)Listener (参数调用者)ROS Master 作为一个公共容器保存参数,Talker 可以向容器中设置参数,Listener 可以获取参数。整个流程由以下步骤实现:1.Talker 设置参数Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值),ROS Master 将参数保存到参数列表中。2.Listener

2022-04-11 22:07:11 271

原创 [ros基础] --- roslaunch使用详解

1 为什么需要launch文件在节点少,程序小的情况下可以一个一个节点来启动,测试运行效果;但是当工程规模大,需要的节点多时就显得比较费劲,用.launch文件来启动可以将需要的节点同时启动,不用再一个一个进行。为工程搭建提高了效率,里面还有很多参数灵活使用会带来非常高效的调试。roslaunch的概念:launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。NOTE:roslaunch 命令执行launch文件时,首先会判断是否启动了 rosco

2022-04-11 22:06:25 3769

原创 【cmake】 --- 常用基础指令简介

1. aux_source_directory1> aux_source_directory 查找在某个路径下的所有源文件,搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在dir变量中2> aux_source_directory 语法如下:aux_source_directory(< dir > < variable >)3> 用法示例:aux_source_directory(. DIR_SRCS)查找当前目录下的所有源文件,并将名称保

2022-03-23 13:38:10 849

原创 x86 平台代码移植到 嵌入式平台[交叉编译三方库]

0 背景: windows平台下用ide开发好程序,需要移植到tda4嵌入式平台1 不更换编译工具链,写cmake管理项目在Ubuntu下新建文件,把代码copy过来下载三方库源码,用PC端默认的Gcc G++编译器编译库写cmake管理现有工程,确认cmake可以用2 找到嵌入式平台交叉编译工具链拷贝到Ubuntu系统的路径下,这里将工具链文件夹拷贝到/opt/tools目录并将该路径导出到环境变量vim ~/.bashrc最后一行加上export PATH=/opt/

2022-03-22 08:54:07 125

原创 【cmake】 --- 一个完整的cmake工程示例

背景:工作需求,最近开始接触cmake,由于之前都是用makefile管理工程的,所以一下适应不了,在网上找了一圈,自己整理了一个完整的用cmake管理的工程,废话少说,上菜。1. 工程tree图对整个工程目录结构做简单的说明:1> 顶层目录其中how_to_generate_sharedLibrary目录是用来生成动态库的示例thirdparty中存放了生成动态库的头文件和.so文件2. 各级CMakeLists.txt讲解1> 顶层CMakeLists.txt讲解cmak

2022-03-19 23:33:20 589

原创 【cmake】 --- cmake基础

1. cmake中一些预定义变量1.1 预定义变量PROJECT_SOURCE_DIR 工程的根目录PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/buildCMAKE_INCLUDE_PATH 环境变量,非cmake变量CMAKE_LIBRARY_PATH 环境变量CMAKE_CURRENT_SOURCE_DIR 当前处理的CMakeLists.txt所在的路径CMAKE_CURRENT_BINARY_DIR target编

2022-03-19 19:51:41 43

原创 git clone ssh与https

git有两种方式拉取代码,ssh,httphttps git clone是这样的git clone https://github.com/project/repo.gitssh git clone是这样的git clone git@github.com:project/repo.git区别就是所用的协议不同:https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key

2022-03-16 22:34:41 1255

原创 ROS错误及其解决方法

新建工作空间,在执行catkin_make的时候报错The specified base path “/home/ghy/catkin_qt” contains a CMakeLists.txt but “catkin_make” must be invoked in the root of workspace…..解决方法:unlink ./CMakeLists.tx

2022-03-16 22:34:11 216

cmake菜谱中文版, cmake practice 很好的cmake入门资料

cmake菜谱中文版, cmake practice 很好的cmake入门资料

2022-03-24

cmake完整工程示例

1. 完整cmake示例,多晚文件管理 2. 演示如何生成动态库,以及如何使用动态库

2022-03-19

multi_process_operate_db.zip

多进程访问sqlite,项目源码,数据库冲突以及解决方法

2022-01-12

C/C++编程规范文档

C/C++编程规范文档

2021-12-24

callback_function_usage.tar.gz

实际工程中使用的回调函数示例

2021-10-27

MQTT协议资源资源,mqtt

MQTT协议资源资源,mqtt

2021-10-24

F1移植CANFestival.rar

F1正点原子开发板移植CanOpen源码

2021-10-12

01_shell编程.pdf

shell教程,关注“M2嵌入式”,回shell免费获取

2021-09-07

01_Linux网络编程-网络基础-socket编程-高并发服务器.docx

01_Linux网络编程-网络基础-socket编程-高并发服务器.docx

2021-09-06

Linux网络编程-网络基础-socket编程-高并发服务器.pdf

《Linux下C语言socket网络编程视频教程》对应文档 https://www.bilibili.com/video/BV1J4411j7Rx?p=19&spm_id_from=pageDriver

2021-09-05

脱不花·30天沟通训练营.pdf

企业内部员工沟通技巧

2021-08-26

general_Makefile_usage.rar

通用Makefile生成动态库示例

2021-08-15

c++基础与提高.rar

C++提高教程

2021-07-19

GNU_Makecn.rar

GNU_make ,用makefile管理工程的时候,很好的参考文档,比一起学makefile更具体

2019-08-14

C语言中如何使用全局变量示例

C语言中如何使用全局变量简单示例,多文件.c中如何使用全局变量 关注“M2嵌入式”公众号,回复资源免费下载

2018-11-20

龙邱SYN7318非特定语音识别模块程序

SYN7318语音模块,代码已经移植到正点原子F1开发板,只需要简单的实验下,就可以移植到自己的项目

2018-10-28

STM32 L298N代码

STM32控制L298N驱动电机,通过按键实现控制,是调节PWM脉宽以及正反转

2018-10-04

LD3320语音模块STM32

硬件基于正点原子F1开发板,控制LD3320模块,用于语音控制,程序只是给出了控制LED示范。

2018-10-04

STM驱动有刷电机源码

STM32驱动25GA370电机,PWM驱动,可以直接改引脚去用到自己的项目

2018-10-04

CanFestival3.10源码

从CanFestival官网下载的最新的源码,可以自己移植到工控机或者单片机

2018-10-04

PCB封装库---经过很多次画板检验

常见的各种接口封装包括DB9、USB内存等等、芯片封装(常见的sTM32、DSP、以及常见电源芯片)、元器件封装(0603、SOT23等等)

2018-09-27

根文件系统

参考朱有鹏老师嵌入式视屏课程,自己制作的根文件,跟视屏里面一样的操作

2018-09-25

大彩串口屏-正点原子STM32DEMO

广州大彩屏,STM32程序,用正点原子的例程移植的,他们自带的例程是Keil4的,改了很多地方。

2018-06-21

空空如也

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

TA关注的人

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