昵名不能为空
码龄4年
  • 86,374
    被访问
  • 57
    原创
  • 765,427
    排名
  • 52
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:注: 注: 本人博客更多的目的是给自己得笔记!!! 注: 注:

  • 加入CSDN时间: 2018-10-17
博客简介:

ZR

查看详细资料
  • 3
    领奖
    总分 225 当月 3
个人成就
  • 获得57次点赞
  • 内容获得28次评论
  • 获得330次收藏
创作历程
  • 20篇
    2021年
  • 33篇
    2020年
  • 9篇
    2019年
成就勋章
TA的专栏
  • GIT
    4篇
  • Linux
    12篇
  • bat
    2篇
  • Makefile
  • Python
    7篇
  • NB-Iot
    4篇
  • C语言
    2篇
  • STM8
    1篇
  • STM32
    8篇
  • kotlin
    1篇
  • 通信协议
    11篇
  • 其他
    8篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

SPI通信详解

一、前言  SPI是一种高速全双工同步通信总线。一个主机设备可以和一个或多个从机设备进行通信。主设备开始与从设备的同步通信,从而完成数据的交换。标准的SPI有四个引脚,分别为:MOSI: 主机输出从机输入MISO: 主机输入从机输出CLK: 时钟CS片选(这个引脚叫法比较多)二、名词CPOL:clock polarity 时钟的极性:表示 SPI 在空闲时, 时钟信号是高电平还是低电平.CPHA:clock phase 时钟的相位:表示 SPI 设备是在 SCK 管脚上的时钟信号变为上
原创
发布博客 2021.08.20 ·
1633 阅读 ·
1 点赞 ·
0 评论

IIC通信详解

对于这种常用通信协议中的细节,时间长不使用总是记不清,今写下笔记。一、时序及信号1、起始信号:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变。2、结束信号:当SCL线为高电平时,SDA线从低电平向高电平跳变。注:开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其它器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间过,总线被认为是空闲的。3、数据采样IIC总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上
原创
发布博客 2021.08.20 ·
272 阅读 ·
0 点赞 ·
0 评论

STM32的启动文件详解

启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针SP=_initial_sp2、初始化PC 指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用C 库函数_main 初始化用户堆栈,从而最终调用main 函数去到C 的世界查找ARM 汇编指令在讲解启动代码的时候,会涉及到ARM 的汇编指令和Cortex 内核的指令,剩下的ARM的汇编指令我们可以在MDK->Help->Uvision Help 中搜索到
转载
发布博客 2021.08.05 ·
314 阅读 ·
0 点赞 ·
0 评论

VSCode常用

1、文件夹过滤“**/__obj_app_soft”:true,2、文件过滤“**/*.pp”: true,3、常用插件1)、 C/C++,这个肯定是必须的。2)、 C/C++ Snippets,即 C/C++重用代码块。3)、 C/C++ Advanced Lint,即 C/C++静态检测 。4)、 Code Runner,即代码运行。5)、 Include AutoComplete,即自动头文件包含。6)、 Rainbow Brackets,彩虹花括号,有助于阅读代码。7)
原创
发布博客 2021.07.23 ·
41 阅读 ·
0 点赞 ·
0 评论

GIT克隆版本库中的单个文件夹

有的时候一个工程很大,但是我们只是需要这个工程中的某个文件夹中的内容,如果克隆整个版本库是需要很长时间的,下面就说明一下怎么克隆指定的文件夹现在有一个test仓库https://github.com/mygithub/test你要gitclone里面的tt子目录:在本地的硬盘位置打开Git Bashgit init test && cd test //新建仓库并进入文件夹git config core.sparsecheckout true //设置允许克隆子目录e
原创
发布博客 2021.07.05 ·
251 阅读 ·
0 点赞 ·
0 评论

NFS、FTP、SSL、TFTP环境搭建

一、FTP服务1、安装FTP服务sudo apt-get install vsftpd2、配置sudo vi /etc/vsftpd.conf3、重启FTP服务sudo /etc/init.d/vsftpd restart二、SSH服务开启apt-get install openssh-server三、tftp服务器搭建一般情况下,tftp用于通过网络下载东西到DRAM中,,Ubuntu主机作为TFTP服务器,因此需要在Ubuntu上搭建TFTP服务器。1、安装 tftp-h
原创
发布博客 2021.05.17 ·
63 阅读 ·
0 点赞 ·
1 评论

GIT项目A引用项目B中某个文件夹的详细操作流程

一、项目A分割-subtree1、进入需要被分割文件夹的上级目录2、使用subtree分割git subtree split -P <name-of-folder> -b <name-of-new-branch><name-of-folder>:从工程根目录开始算起,类似“project/folder1/folder2”的格式<name-of-new-branch>:创建的分支名称二、创建项目B1、退出当前目录,在其他位置创建个git仓库m
原创
发布博客 2021.05.12 ·
459 阅读 ·
0 点赞 ·
0 评论

bat:令人绝望的文件夹切换

接触bat文件不多,现在写一个简单的bat脚本,发现win下的跨盘符切换文件夹时的两个奇怪现象,让我在测试的时候浪费了很多时间。因此好好的整理一下。奇怪现象1:使用cd f:/dir/dir 但是切换不成功奇怪现象2:使用cd c: 切换盘符的时候怎么不是根目录而是切换到了上次从c盘切换出来时候的目录。奇怪现象1:C:\Users\Administrator>cd F:/00C:\Users\Administrator>奇怪现象2:C:\Users\Administrator
原创
发布博客 2021.04.29 ·
48 阅读 ·
0 点赞 ·
0 评论

bat语法

一、文件目录:当前盘符:%~d0当前路径:%cd%当前bat文件路径:%~dp0当前bat文件短路径:%~sdp0当前执行命令行:%0
原创
发布博客 2021.04.26 ·
47 阅读 ·
0 点赞 ·
0 评论

Linux之GDB调试

一、代码编译需要使用gdb调试的代码编译时需要添加-g选项如:# gcc -g test.c -o test二、调试流程使用gdb运行编译出来的可执行文件如:#gdb test三、GDB调试语法命令功能(gdb) I查看文件(gdb) r运行代码(gdb) c恢复程序运行(gdb) b 6在第六行设置断点(gdb) info b查看断点信息(gdb) p n查看变量n的值(gdb) n单步执行–不进入函数内部(gdb)
原创
发布博客 2021.04.22 ·
22 阅读 ·
0 点赞 ·
0 评论

Linux串口通信

#include "stdio.h"#include "stdlib.h"#include "unistd.h"#include "sys/types.h"#include "sys/stat.h"#include "fcntl.h"#include "termios.h"#include "errno.h"#include "string.h"int main(){ int tty_fd; struct termios opt; int n; char
原创
发布博客 2021.04.21 ·
28 阅读 ·
0 点赞 ·
0 评论

Linux线程同步(线程信号量互斥量)

有两组接口函数用于表示信号量,一组取自POSIX的实时扩展,用于线程。另一组取自系统V信号量,常用于进程同步。本文章是针对第一种信号量的知识点。信号量是一种特俗的变量,可以增加减少,但对其的访问被保证是原子操作,这样的特殊性保证了一个程序中有两个或者更多的线程试图改变一个信号量的值时,系统将保证所有的操作都将依次执行,如果是普通变量,来自同一个程序中的不同线程的冲突操作所导致的结果是不确定的。以下所有函数返回值都遵循成功返回0。一、信号量创建#include "semaphone.h"yi/*
原创
发布博客 2021.04.20 ·
93 阅读 ·
0 点赞 ·
0 评论

Linux线程及线程属性

一、线程创建#include "pthread.h"/** *thread:句柄(线程ID) * attr:设置线程数性,如果没有特俗需求,设置未NULL * start_routine:入口函数 * arg:入口函数的参数 * return:线程创建成功返回0,失败返回错误码**/int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routi
原创
发布博客 2021.04.19 ·
56 阅读 ·
0 点赞 ·
0 评论

关于DMA,TCM(ITCM和DTCM)和Cache的理解!

关于DMA,TCM(ITCM和DTCM)和CacheDMADMA=Direct Memory Access。这是一种通过硬件实现的数据传输机制。简单的说,就是不在CPU的参与下完成数据的传输。DMA是一种硬件设备。这种设备的工作原理是这样的:——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求)——DMA收到CPU的消息,开始准备。此时CPU把数据源地址、数据目标地址、传输数据量、传输模式等等参数告诉它。(DMA初始化)——DMA初始化完,向CPU发送消息“借你的
转载
发布博客 2021.04.14 ·
231 阅读 ·
0 点赞 ·
0 评论

Linux进程

一、进程和线程得关系
原创
发布博客 2021.04.12 ·
40 阅读 ·
0 点赞 ·
0 评论

GIT创建分支及分支合并的操作流程

一 创建分支流程:创建分支:git branch develop_branch切换到该分支: git checkout develop_branch在远端建立一个分支与该本地branch分支相对应起来:git push --set-upstream origin develop_branch二 分支合并:切换到需要合并到的分支: git checkout master将目标分支合并到目前所在分支:git merge develop_branch使用git status查看冲突文件,并解决
原创
发布博客 2021.04.12 ·
361 阅读 ·
0 点赞 ·
0 评论

GIT常用指令集合

一、名词:工作区(workspace) :平时些的代码都在工作区暂存区(index/Stage) :工作区代码执行add命令后将代码提交到暂存区本地仓库(Repository) :暂存区代码执行commit命令将代码提交到本地版本库远程仓库(Remote) :本地仓库代码执行push命令将代码提交到远程仓库二、本地git服务器搭建三、常用命令命令功能常用指令git add将文件从工作区添加到暂存区【git add file1 file2】将文件file1,f
原创
发布博客 2021.04.01 ·
61 阅读 ·
1 点赞 ·
0 评论

python修饰符 ‘@‘ 详解

今天在琢磨一个python脚本中遇到了一个陌生得python写法,觉得很奇怪,如下图:这个一堆’@'是什么东西?一、定义:函数修饰符在python中,这个@被称为函数修饰符,其基本功能及特点如下:可以在模块或者类的定义层内对函数进行修饰出现在函数定义的前一行,不允许和函数定义在同一行一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西二、作用简单理解,修饰符就是一个函数,并且是一个入参为函数的函数。举个没有意义的例子,比如我们需要将一个函数(这里应该
原创
发布博客 2021.03.12 ·
1881 阅读 ·
5 点赞 ·
0 评论

position.rar

发布资源 2021.03.04 ·
rar

NMEA0183格式GPS数据详解

NMEA0183格式以’$'开始,主要语句有GPGGA,GPRMC,GPGSA,GPGSV,GPVTG,GPZDA等NMEA格式数据如下:$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77$GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04
原创
发布博客 2021.02.23 ·
606 阅读 ·
1 点赞 ·
0 评论
加载更多