自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (7)
  • 收藏
  • 关注

原创 linux i2c总线分析使用设备树

linux i2c总线分析使用设备树i2c总线简要说明I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。分别为时钟线SCL和数据线SDA,这里不重点分析i2c的物理特性,我们主要是分析linux下的i2c的软件框架,在MCU用过i2c的读者应该知道,i2c在MCU里面属于一个外设控制器,用户设置好时钟,从机地址,和数据搬运到读写寄存器外设控制器就可以把数据在i2c总线上发送出去。linux下i2c的总线模型linux是一个支

2020-11-25 16:01:50 2061 4

原创 linux spi总线分析使用设备树

linux使用设备树的SPI总线分析linux下SPI的总线模型linux下spi总线和platform总线类似,platform分为platform device和platform driver,spi总线分为spi_device和spi_driver。在一个Soc芯片上有多个spi的控制器spi0、spi1等等,例如我们把spi0控制器称为一个spi_master,每个spi控制器下面可以挂载多个设备,比如有spi norflash device,spi lcd device等,每个设备的片选不

2020-11-23 20:18:24 2860

原创 linux BT调试记录

因为SOC和BT的通讯使用的是UART进行通讯,出现timeout可能性就是硬件上无法通讯成功,所以我们使用示波器抓了波形,发现SOC Tx的波形只能拉0.5V到GND,无法全部把1.8V拉到GND,检查发现是SOC的串口的Tx接到BT模组的Tx(备注:BT模组的Tx也是输出模式,所以无法拉到GND的,只有对方接收是输入才能拉到GND),所以是设计的时候出现了错误,将Tx和Rx调换过来,BT调试OK。在调试05这个板子的W1模块的BT的时候,使用原厂的SDK调试发现BT无法调试成功。

2024-04-07 14:30:06 312

原创 linux C语言判断一个程序是否在运行

【代码】linux C语言判断一个程序是否在运行。

2024-01-26 15:25:21 163

原创 Linux在应用层上使用I2C

通常情况下i2c读写一般是在kernel中使用,但是在应用层上一样可以使用。在应用上可以通过读写/dev/i2c-x这个节点从而控制i2c接口进行读写数据。通常一个SOC有多个I2C控制器,假设有这个SOC有3个控制器,我们会在/dev目录下看到i2c-0、i2c-1、i2c-2,计数从0开始。

2024-01-08 19:00:20 788

原创 嵌入式开发专业名词解释

IED就是我们编写代码的工具。有些工具还能提供编译、烧写、生成可执行程序功能。比如keil就是一个IDE工具,开发安装程序的Android studio也称为IDE工具。由此可知IDE工具就是一系列集成开发、编译、生成可执行程序的工具集合的工具集。在不用的领域使用不同的IDE工具。

2023-08-13 14:42:32 418

原创 linux 判断一个程序是否在运行

【代码】linux 判断一个程序是否在运行。

2023-08-08 11:58:45 460

原创 电子信息工程专业如何安排学习?

在众多的工科院校中一定有一个专业叫电子工程信息工程专业,这个专业一般是开设在电信学院下面的。那么电子信息工程专业的学生主要是学习那些知识呢?电子信息工程专业属于工科专业,所以决定了这个专业主要是应用为主,就是不会涉及到太多的基础研究,这个是和理科专业有很大的区别的。大一的时候和所有的专业一样都有公共课和专业课。公共课就是数学、英语、马克思这些,这些基本所工科所有的专业都会上的课。

2023-08-05 22:55:25 871

原创 嵌入式软件工程师和嵌入式硬件工程师的区别

由此嵌入式工程师就分为两个分支,嵌入式软件工程师和嵌入式硬件工程师。嵌入式软件工程师负责代码的编写。嵌入式硬件工程师负责硬件的设计。两种工程师所需要掌握的知识是不同的。

2023-08-05 21:48:52 474

原创 你能在linux系统找到cd指令么?

cd不是一个应用程序而是Linux内建的命令,而sudo仅仅只对应用程序起作用。所以,sudo cd containers会报sudo: cd:找不到命令。sudo xxx只意味着以root权限运行xxx程序。

2023-02-09 09:32:30 479 1

原创 什么是堆栈?堆栈用来干什么的?

在程序运行当中,每一个线程都有自己的栈空间,栈是用来干什么用的呢?还记得我们C语言学习的时候函数的局部变量么?栈空间就是用来保存局部变量的。所以我们就回答了第一个问题,栈有什么用,栈就是用来保存函数的局部变量的。

2023-01-01 23:21:43 1804

原创 samba用户管理

假设linux系统中有多个用户,比如zero1、zero2,每个人都有一个/home/zero1这个目录,那怎么让每个人都可以共享自己的目录,然后可以在window下面共享呢?因为Samba管理都是配置 /etc/samba/smb.conf这个文件,所以我们在这个文件分组设置共享目录即可。

2022-09-29 16:26:00 580

原创 Git仓库上传服务器

在工作当中我们经常需要将仓库上传到服务器,一般情况下我们有如下步骤需要做。

2022-09-28 16:33:30 726

原创 使用gpio_direction_output()无法设置GPIO原因分析

3、通过逻辑分析仪抓到的波形分析可以看到,我们的driver是有一段时间把这个GPIO拉高的动作的,但是不久之后这个IO后就有一段很长的拉低拉高的波形,这个波形很像数据传输的波形,最后IO口被拉低,然后我们有理由怀疑这个IO口是和控制器冲突了,通过查看这个IO口可以知道GPIO3_D7在RK3399芯片中是I2S0控制器DATA0输出引脚。echo 1 > /sys/class/gpio/gpio127/value #设置GPIO3_D7输出高电平。linux 应用层操作GPIO。...

2022-08-17 17:41:30 4613 1

原创 git把所有修改的文件打包方法

git diff f4710c4a32975904b00609f3145c709f31392140 HEAD --name-only | xargs tar -rf update_201800001.tar

2022-08-15 17:27:38 977

原创 打patch 命令

打开patch文件可以看到文件目录是如下图,有一个a/xxxx,所以要忽略a目录就需要设置为p1,如果要忽略drivers目录就需要设置为p2。将path放在kenel根目录下。选项为什么用 -p1?

2022-08-12 17:00:59 1382

原创 二极管和稳压管的区别

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。二极管和稳压管的区别第一,二极管一般在正向电压下工作,稳压管则在反向击穿状态下工作,二者用法不同;第二,普通二极管的反向击穿电压一般在40V以上,高的可达几百伏至上千伏,而且在伏安特性曲线反向击穿的一段不陡,即反向击穿电压的范围较大,动态电阻也比较大。对于稳压管,当反向电压超过其工作电压Vz(亦称齐纳电压或稳定电压)时,反向电流将突然增大,而器件两端的电压基本保持恒定。对应的反向伏

2022-05-29 12:53:25 1394

原创 电路积木-稳压电路的使用和原理

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。稳压管电路使用由稳压二极管 Dz 和限流电阻 R 所组成的稳压电路是一种最简单的直流稳压电源。从该稳压管稳压电路可以得到两个基本关系式:Ui=Ur+UoIr=Idz+IL在稳压管的参数范围内,可以理解为Uo的电压,也就是稳压管两端的电压是不变的,如果Ui的电压增大,由公式Ui=Ur+Uo可以知道,因为Uo不变,所以Ur会变大,所以可以知道Ui增大的值等于Ur增大的值。电压减

2022-05-29 12:41:30 2269

原创 C语言sizeof()使用方法合集

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。sizeof()sizeof在C语言中有什么用呢?sizeof在C语言中可以用来计算数据类型定义的变量占空间的大小,或者已经定义的变量占空间的大小。1、可以计算数据类型的大小,比如int类型。//sizeof的使用方法int a = sizeof(int);//上面我们可以使用sizeof计算int类型定义的变量占空间的大小,因为int类型占4个字节,所以a的值为4。i

2022-05-02 23:21:13 3109

原创 二极管与、或门,三极管非门电路原理

二极管与门电路原理如图,为二极管与门电路,Vcc=10v。假设3v及以上代表高电平,0.7及以下代表低电平。下面根据图中情况具体分析一下:1.Ua=Ub=0v时,D1,D2正偏,两个二极管均会导通,此时Uy点电压即为二极管导通电压,也就是D1,D2导通电压0.7v.2.当Ua,Ub一高一低时,不妨假设Ua=3v,Ub=0v,这时我们不妨先从D2开始分析,D2会导通,导通后D2压降将会被限制在0.7v,那么D1由于右边是0.7v左边是3v所以会反偏。截止,因此最后Uy为0.7v,这里也可以从D1

2022-03-24 09:14:30 4737

原创 warning: unused parameter 消除

第一种方法#define UNUSED(x) (void)xvoid SomeFunction(int param1, int param2){UNUSED(param2);// do stuff with param1}

2022-03-07 11:13:48 1181

转载 mutex和spin lock的区别和应用

多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理。mutex_lock(struct mutex *lock)和mutex_unlock(struct mutex *lock)是加锁和解锁。(1)mutex和spin lock的区别和应用(sleep-waiting和busy-waiting的区别):信号量mutex是sleep-waiting。 就是说当没有获得mutex时,会有上下文切换,将自己、加到忙等待队列中,直到另

2022-01-07 10:25:02 629

原创 一篇文章讲明白:freeRTOS的任务

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。任务在软件中的任务和我们现实当中的任务是类似的,在现实当中有大任务也有小任务。大任务也可以拆解成很多小任务,然后各个小任务一起配合完成一个大任务。在不带操作系统中所有的任务都跑在while(1)大循环中。在带操作系统中的程序任务就可以把大任务分解成很多个小任务,各个小任务互相配合完成程序需要满足的这个大任务。xTaskCreatexTaskCreate是一个建立任务的函数,通过调

2022-01-06 21:26:55 572

原创 一篇文章讲明白:freeRTOS的链表

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。链表英文名用list来表示,顾名思义,就和我们常见的项链一样,上面有很多的圆环一个一个的连接起来,只是对于软件来说就是把一个一个对象连接起来,在C语言中我们这个对象就是我们自己定义的各个结构体,我们将这些结构体连接起来,然后就形成了链表。这些结构体中必须有一个node节点,这个节点都是我们所说的项链上的一个个圆环,每个圆环左手拉上一个圆环的右手,圆环的右手拉下一个圆环的左右。他们之间

2022-01-06 21:22:36 1052

原创 一篇文章讲明白:freeRTOS的信号量

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。信号量:信号量大家可以理解为我们现实当中的权限,获取到某种资源信号量,这时候你就获取到了使用这种资源的权限,如果你没有获取到信号量你就不能使用这种资源。使用信号量可以使得同一个硬件或者关键函数或者变量,在任何时候都只有一个任务可以使用,别的任务使用这个硬件的时候必须等待信号量释放才能后使用。//获取信号量函数,如果获取不到信号量,则任务会挂起。如果获取到信号量则继续向下执行。//

2022-01-06 21:21:31 631

原创 一篇文章讲明白:freeRTOS的消息队列

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。

2022-01-06 21:17:54 1098

原创 C51的一些基础知识

公众号欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。我们写C51代码的时候给P0口写一些值都是使用P0 = 0Xff,但是这个P0是什么意思,在那里定义呢?其实是在<reg51.h>这个头文件中。我们打开<reg51.h>这个头文件可以看到如下的定义。//表示P0的寄存器地址的值为0x80;sfr P0 = 0x80; sfr SP = 0x81;sf

2022-01-04 14:23:14 1093 2

原创 关于Keil打开工程中的.c文件就无响应卡死的解决办法

出现这个问题一般是在打开别人的工程文件时,由于对方的keil版本与自己keil版本不一致引起的,只要删除这个工程文件下的.uvopt文件即可解决。

2022-01-04 11:35:29 5930 2

原创 一篇文章告诉你晶振的作用

公众号欢迎关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。晶振晶振是用来做什么的?在嵌入式系统中晶振一般用来给单片机或者说MCU提供系统时钟用的,那什么是系统时钟?系统时钟类似于人类的心脏,心脏的跳动人才可以运动、思考。MCU也一样,必须在晶振提供的时钟下才能进行运算。常见的晶振图晶振和MCU连接图如上图连接,晶振和MCU连接在一起,我们还可以看到有两个电容,具体这两个电容是什么作用的,我们学习软件的无需关心。晶振波形上面的

2022-01-03 16:39:46 5340 2

原创 代码规范建议

今日代码规范建议!大家写代码的时候需要消除魔鬼数,什么是魔鬼数看下面图片。/* 魔鬼数消除 什么是魔鬼数?就是使用一个变量代表多种状态,而且这个状态使用1、2、3等数字表示, 这个1、2、3代表什么意思只有写代码的人知道,或者只能去看代码猜测是什么意思*/void speaker_mode_proc(uint8_t mode){ if(mode == 1) { //do something } else if(mode == 3

2021-12-21 09:39:27 98

原创 音频切歌消除POP声或者噪音算法,淡入淡出算法

1、什么是淡入淡出?什么是淡入淡出?淡入为声音的音量从无声渐变到正常,淡出则是声音从正常慢慢的变为无声。2、淡入淡出有什么用?在音乐暂停或者切歌或者切EQ的时候,如果没有淡出,由声音慢慢变成最小再切歌,就会听到一声大大的pop pop声,用户体验非常的不好。所以切歌的时候需要先淡出,然后切换下一首歌曲,然后再淡入。3、淡入淡出算法淡入淡出可以使用算法修改PCM的数据流来实现淡入淡出的效果。4、淡入淡出1kHZ PCM数据效果4.1、下图是正常的1khz的PCM信号4.2、下面是经过淡出淡入

2021-12-17 11:31:58 2340

原创 linux串口读写例子

#include <stdio.h> #include <string.h>#include <errno.h>#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <unistd.h>#define W_BUF

2021-12-16 16:46:29 889

原创 电子电路积木

MUC IO口检测 DC是高电平还是低电平在DC_21V有电压的时候,21V电压经过两个电阻100k和22k的分压,我们可以知道三极管1脚的电平为3.8v,所以三极管导通,POWER_DET接地,所以输入MCU IO口的电平为低电平,反之输入为高电平。为什么是高电平?因为三极管截止,3脚的接MCU的电平就是MCU上拉输入的电平,即高电平。...

2021-12-15 09:45:53 2016

原创 链表英文名用list来表示

链表链表英文名用list来表示,顾名思义,就和我们常见的项链一样,上面有很多的圆环一个一个的连接起来,只是对于软件来说就是把一个一个对象连接起来,在C语言中我们这个对象就是我们自己定义的各个结构体,我们将这些结构体连接起来,然后就形成了链表。这些结构体中必须有一个node节点,这个节点都是我们所说的项链上的一个个圆环,每个圆环左手拉上一个圆环的右手,圆环的右手拉下一个圆环的左右。他们之间的相互牵手然后形成了一个链表。...

2021-11-24 11:29:09 1138

原创 repo仓库使用

使用 Repo 需遵循的格式如下:repo 可选元素显示在方括号 [ ] 中。例如,许多命令会将项目列表用作参数。您可以为项目指定项目列表,作为名称列表或本地源代码目录的路径列表:repo sync [ ]repo sync [</PATH/TO/PROJECT0> … </PATH/TO/PROJECTN>]help安装 Repo 后,您可以通过运行以下命令找到最新文档(开头是包含所有命令的摘要):repo help您可以通过在 Repo 树中运行以下命令来获取

2021-11-19 09:26:08 1532

原创 C语言精练教程:连载中

如何学好C语言?学好C语言我觉得首要的方法就是练,初学的时候跟着书本的程序抄写,语法熟练后就是大量的练习了,拿着书本的习题全部敲出来,如果实在敲不出来也没有关系,看答案,看完答案后跟着敲,思考别人是怎么实现的,所以说如果一个人都不练习是无法学会C语言的。第二个方法就是调试,也称为debug,我们都是人就难免会出一点错误的地方,程序并没有按照我们的想法去执行,所以我们就需要debug了,debug是我们快速提升C语言能力的手段,以前遇到一些人C语言的理论知识学的很牛,但是真正写程序的时候就写不出来,然后一上

2021-11-14 17:12:46 1168

原创 linux SPI PGA2311 Driver

#include <linux/init.h> #include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/slab.h>#include <linux/delay.h>#include <linux/err.h>#include <lin

2021-11-05 15:47:11 264

原创 C语言精练教程:连载中

安装工具在学习C语言的时候我们首要的需要安装编写C语言的工具,如果大家手上有C语言的书籍的话应该会发现推荐的工具可能是VC6.0,这个是微软推出的一个编写代码的工具,但是这个工具比较老了,虽然功能强大,但是对新手来说根本就用不着那么强大的功能,而且我觉得这个工具有点丑,哈哈,可能是工具太老了吧,所以跟全老师学习C语言我推荐一个又轻量又好用的工具C-free,重点是这个工具还是中国人自己出版的工具。第二个工具是notepad++,对于电脑自带的记事本工具来说notepad++添加了很多实用的功能,而且界面

2021-11-03 22:09:25 260

原创 linux:/sys/xxx 读写节点使用方法

/sys/xxx读写节点在 /sys 中生成节点,用于应用层从驱动中获取数据,或者将数据写到驱动层中,比如点亮LED灯或者获取GPIO的值的高低电平。#include <linux/init.h> #include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/slab.h>

2021-11-03 11:45:50 2030

原创 RK3399 GMAC驱动失败,打印如下log,DMA engine initialization failed 原因

RK3399 GMAC驱动失败,打印如下log,DMA engine initialization failed原因这种情况只有在“clock_in_out = “input”;”情况下才出现。(1) 需要确认 GMAC 工作主时钟 MAC1_CLK 是否有从 PHY 供给主控:使用 100M PHY 时,其频率是 50M。使用 100M PHY 时,其频率是 125MRockchip 以太网 开发指南 4 以太网常见问题排查。(2) 如果有 clock,需要确认 clock 的幅度是否达标,一

2021-10-28 15:39:55 2792

IED 61737相关文件

IED 61737相关文件

2024-01-12

字符编码ASCII、GB2312、Unicode、UTF-8.pdf

详细描述了:字符编码ASCII、GB2312、Unicode、UTF-8区别。

2021-08-16

通过freetype库实现矢量显示.pdf

通过freetype库实现矢量显示.pdf

2021-08-16

STM32出现HardFault故障的解决方法.pdf

STM32出现HardFault故障的解决方法.pdf

2021-05-27

Bluetooth GATT介绍 .pdf

Bluetooth GATT介绍 .pdf

2021-05-27

Flexmem_demo例程指南.pdf

例程功能 飞思卡尔 Kinetis 100MHz Silicon1.x 产品 flexmem_demo 例程实现使用 FlexRAM 以及 FlexNVM 相互结合模拟出 EEPROM 的功能,其中划分 FlexRAM 的部分区域作为 EEPROM 的实际 存储区域,划分 FlexNVM 的部分区域作为 EEPROM 的备份区。模拟出 EEPROM 存储器后,采用 PIT 定时 15 秒写读 EEPROM 区域,并通过波特率为 115200bps 的串口打印方式记录。

2019-08-07

DMR协议PART-1:空中接口.pdf

DMR协议PART-1:空中接口.pdfDMR协议PART-1:空中接口.pdfDMR协议PART-1:空中接口.pdf

2017-11-01

空空如也

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

TA关注的人

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