![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 54
Code_DZhangTeng
一步一个脚印
展开
-
git commands 总结
git功能很强大,但往往只用自己熟悉的命令,有很多神奇的魔法没有用到,总结记录一下。一、配置git config 改变git的默认配置,例如你的名字,指定的终端颜色,指定的编译器等。git help 用来显示任何命令的git自带文档。二、获取与创建项目有两种方式获得一个git仓库;一种是从网络或者其他地方拷贝一个现有仓库,另一种就是再一个目录中创建一个新的仓库。git init 可以将一个目录转化为一个git仓库。git clone...原创 2022-05-19 11:47:00 · 332 阅读 · 0 评论 -
C++基础之标准模板库STL
1. STL(Standard Template Library;标准模板库)STL从广义上分为:容器;算法;迭代器;容器和算法之间tong'guo原创 2021-06-15 19:56:08 · 106 阅读 · 0 评论 -
C++基础之map容器
1. map的依赖--pair对组pair是成对出现的数据: 两种定义形式:①默认构造 pair<type,type> data (value1,value2);②make_pair构造 pair<type,type> data = make_pair(value1,value2);pair<string,int> p("code_dZt",28);std::cout << p.first << " " << p.s原创 2021-05-28 19:28:04 · 1112 阅读 · 0 评论 -
Linux嵌入式开发笔记(十二)智能指针和实例化的两种写法
一,使用智能指针class AA{public: AA(); ~AA(); void StartService(); void EndService();private: std::unique_ptr<std::thread> t1_; std::unique_ptr<NAMESPACE::CalMqtt> Srv_Mqtt_;};AA::AA(){ Srv_Mqtt_.reset(new CalMqtt原创 2021-05-10 13:38:55 · 211 阅读 · 0 评论 -
Protobuf学习笔记(二)proto类与vector,数组的相互转换
一,protobuf定义的类与std::vector的相互转换。①使用protobuf定义结构化的类,这里不做描述,可参考上一篇。②protobuf定义的类 转 std::vector。CanBasicInfo st_can_basicinfo; //实例化protobuf定义的类st_can_basicinfo.set_socdsp(11); //给类中的对象(信号)赋值【只对其中一个举例】int len = st_can_basicinfo.ByteSizeLong();...原创 2021-01-19 14:06:53 · 4984 阅读 · 0 评论 -
Linux嵌入式开发笔记(八)自定义msg数据类型报错解决方案
这里主要是笔记,是基于自己的工作空间和包,文件结构进行的。有一定基础可借鉴在/zt_package_project/msg中新建一个Ztuint32.msg 在文件中输入 uint32 data 在CMakeLists.txt中相应位置添加上/msg/Ztuint32.msg 在主函数文件夹中声明#include <zt_package_project/msg/ztuint32.hpp> 在函数中定义变量auto message_zt3 = zt_package_project.原创 2020-06-03 15:11:29 · 519 阅读 · 0 评论 -
Linux嵌入式开发笔记(七)ROS2中C++的API函数原型
学着学着,网上的资源就越来越少了,只有匹配自己项目的资源越来越少,授之以鱼不如授人以渔。我就记录一下学习的过程经验,相互学习。学习完ROS2中的pub/sub,service/client,action等通信示例,大概了解其机制,也就可以自己创建工程,实现一个节点从节点A订阅,处理后发布给节点B;同时作为服务器,处理节点C中客服端的请求,再作为客服端向节点D中服务器请求数据算法处理。总之,可以实现单节点的多重形式通信,但是很多都是在ROS2示例中学习的,函数原型是什么,是如何处理的,就不得而知了。今天记原创 2020-05-22 18:38:42 · 1546 阅读 · 0 评论 -
Linux嵌入式开发笔记(六)在ROS2中运行小乌龟实例
在ROS2中运行小乌龟,其实主要就是安装两个工具,turtlesim和rqt。A: 安装turtlesim。输入【sudo apt update】输入【sudo apt install ros-dashing-turtlesim】注意:上一条指令中红色标识的dashing是我安装的ROS2的dashing版本,个人需要根据自己安装的版本去修改。输入【ros2 pkg executables turtlesim】如果提示 不识别 ros2,需要如下处理:先输入【. ~/ros2_w原创 2020-05-13 18:58:59 · 1376 阅读 · 1 评论 -
Linux嵌入式开发笔记(五)Ubuntu1804安装ROS2_dashing版本
项目需要变更ROS2的版本,不是太低,是安装官网安装的版本太高了,有一些插件还不支持,所以这里介绍一下Ubuntu1804中安装ROS2-dashing 版本,并且运行小乌龟和倒立摆等实例。安装步骤确保有一个支持UTF-8的locale设置。locale设置例子如下:$ sudo locale-gen en_US en_US.UTF-8$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8$ export LANG=en_US.U原创 2020-05-13 18:54:36 · 947 阅读 · 1 评论 -
Linux嵌入式开发笔记(四)Ubuntu1804中安装ROS2,并在ROS2中运行ROS1中乌龟实例
Ubuntu1804中安装ROS2,这个网上有很多资源,我也安装了并运行了demo,可以订阅和发布。但是在ROS2中运行小乌龟的demo却遇到很多问题,有无法安装插件,有不识别指令,花式Bug。最终我找到了解决办法:因为小乌龟是ROS中的,不是ROS2中。所以需要做桥接,但是网上的资源与个人安装的版本和方法不太一样,所以会有各种各样的问题。我这里介绍的方案是官网的一整套介绍,也为以后的查看做记录。安装ROS2,一定要去官网,网上资源有些过时了,ROS2的安装教程:https://index.ro原创 2020-05-11 16:18:42 · 627 阅读 · 1 评论 -
在Windows10系统中Perl安装Tk模块
写在前面,很简单的一个操作,但是从网上搜出来的都不适用,不知道是年代太久远了还是版本不一样。我在如下解决的:首先按住:“WIN"+"R"键,召唤出【运行】,输入cmd,打开命令行。然后输入:”cpan"(如果"cpan"bu's不识别可以试试“ppm”。 )再输入“install Tk”(注意区分大小写)之后就等待就可以了,有询问【Y/N】,输入Y,回车键。(注意需要一定时间,注意等待)会有一大串的命令自动执行。耐心等待,直至安装完毕。...原创 2020-05-08 18:37:22 · 1794 阅读 · 1 评论 -
Linux嵌入式开发笔记(三)Ubuntu中新建一个自定义工程
新建工程之前需要安装vim和gcc。输入【sudo apt-get install vim】输入【sudo apt-get install gcc】安装过程中,输入【y】 继续执行安装。新建工程前,需要有两个人性化的设置:设置TAB键为4空格; 设置VIM编译器显示行号;输入【 sudo vi /etc/vim/vimrc 】,在打开的文件最后输入(在文本中无法输入,先...原创 2020-05-07 19:45:26 · 605 阅读 · 0 评论 -
Linux嵌入式开发笔记(二)ubuntu常用命令
第一次打开Ubuntu1804后,右击“打开终端”。页面提示“To run a command as administrator (user “root”),user “sudo <command>” . See “man sudo_root” for details .”如果是管理员权限登入,显示(#);普通用户登入显示($)。打开终端后,默认是安装时注册的用户名登入,...原创 2020-05-05 16:43:20 · 506 阅读 · 0 评论 -
Linux嵌入式开发笔记(一)虚拟机和ubuntu的安装
虚拟机和ubuntu的安装,这里介绍安装免费的VirtualBox虚拟机。下载VirtualBox到本地。百度VirtualBox进入其官网或者链接进入https://www.virtualbox.org/点击Download VirtualBox6.1 进入下载界面。这里下载需要在什么环境下安装的版本,我们一般都是在Windows系统,所以点击下载“Windows host...原创 2020-05-05 15:35:33 · 384 阅读 · 0 评论 -
SD卡安全加密之锁卡与解除、写保护以及内设密码
上一篇介绍了SD卡底层驱动程序的调试手段和时序过程,适合初学者学习,但是在汽车级的涉及安全的大型项目中就需要一些数据安全保护。现在介绍一下SD卡的保护与解除方面的知识点。 SD卡官方英文资料中(可在该链接中下载 https://download.csdn.net/download/code_dzhangteng/10278568)介绍了三种方式:1, 硬件写保护;2,SD...原创 2018-03-10 00:53:07 · 15751 阅读 · 1 评论 -
SD卡中,比SPI总线模式通信更加快速的SD总线模式通信
随着项目中存储数据量的增加,之前用SPI通信模式读写SD卡数据效率有些低,已经跟不上大数据的收集,所以改用比SPI总线模式通信更加快速的SD总线模式通信,效率提高了几倍。现在简单介绍一下,也算是自己的备忘录。 嵌入式中,单片机与SD卡通信由两种模式:SPI总线通信模式;SD总线通信模式。编号(按SD卡引脚)SD总线模式SPI总线模式名称描述名称描述1DAT3数据线3CS片选2CMD命令/...原创 2018-03-26 22:23:37 · 5794 阅读 · 0 评论 -
嵌入式系统启动及初始化——链接文件Project.prm
本文出自一本北京航空航天大学出版的书籍,摘抄至此,标为转载,仅用来学习交流。链接文件Project.prm prm文件主要实现了芯片的RAM和ROM的定义,初始化RAM中的变量、堆栈的大小;定义复位向量,即应用程序的默认入口;还包括了启动代码,即硬件复位后的函数入口。prm文件有5个组成部分构成:(1)NAMES~END部分 用于指定在链接时加入除本项目文件列表之外的额外目标代码文件,这种用法不常...转载 2018-03-26 22:37:34 · 1987 阅读 · 0 评论 -
嵌入式系统启动及初始化——关于#pragma指令的简要说明
本文出自一本北京航空航天大学出版的书籍,仅供学习交流。关于#pragma指令的简要说明#pragma声明是基于单片机开发的特点而对标准C语法的一个扩充,对充分利用MCU内各类有限的资源起到不可或缺的关键作用。下面介绍几个最常用的#pragma声明。(1)#pragma DATA_SEG定义变量所处的数据段。其语法形式为:#pragma DATA_SEG 名称 数据段名称可以自己任意命名,但习惯...转载 2018-03-28 21:20:06 · 1298 阅读 · 2 评论 -
STM32F1的IIC硬件调试之EV5,EV6,EV7,EV8,EV9
以前接触的都是车规级芯片,最近了解了一下STM32F1,用到了其IIC。听说STM32F1库函数的IIC有许多坑,很多人都推荐用IO模拟IIC,只能说这很“51”。上手两天发现,官方库函数的IIC是可以用的,这里介绍一下我解题思路。 初调IIC,很容易陷入库函数中的死循环,为啥呢。EV5,EV6,EV7是啥,死循环干什么;查询了芯片手册,对症下药,一步一步调试,...原创 2019-08-22 17:35:51 · 7036 阅读 · 0 评论 -
算法仿真时,将Excel中真实数据导入simulink中的方法
方法比较有用,记录下来,自己以后还会用到;不然又要四处寻找方法。模拟数据进行算法仿真可行后,需要用到大量的真实试验数据评测算法的可信度;如何将Excel数据导入到simulink中,在此介绍一下自己找到的方法,简单可行。一个用From workspace模块;另一个用Constant模块。情况一:如果需要导入一个随时间变化的变量【From workspace】Excel中第一列为时...原创 2019-09-19 17:27:52 · 16564 阅读 · 3 评论 -
掌握与SD卡“交流”的方法,轻松完成单片机读写SD卡的底层驱动程序
从大二开始写代码至今已经五六年了,之前做过很多嵌入式项目,参加过很多竞赛;慢慢才发现之前很多是知其然不知其所以然,很多东西都是从CSDN,论坛,各个网站学习过来的;工作以后才发现,做出一个东西并不难,重要的是方法,思路。很久以前写出了单片机读写SD卡的程序,前些日子拿出来用,发现不能直接用,自己写的程序现在不能用,很是着急。后来是静下心来,分析SD卡的反馈,修改相应的地方,很快就解决了问题...原创 2018-02-08 22:59:38 · 7851 阅读 · 4 评论