自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qingfeng_博客

技术连接你我

  • 博客(173)
  • 资源 (6)
  • 收藏
  • 关注

转载 几种最常用的串行数据传输总线 - SPI

串行数据总线由于占用较少的管脚被广泛应用在MCU和外设的连接中,在过去的几十年里,有三种最常用的多线串行数据传输格式SPI、I2C和UART。这3种串行总线的主要区别: SPI- Serial Peripheral Interface(串行外设接口),突出了外设,也就有了主(Master - 控制器)和从(Slave - 外设)之分,在总线中也就只有一个“主人”,其它都是处于服从的位置,也...

2019-05-04 16:53:49 10333

转载 几种最常用的串行数据传输总线 - I2C

我第一次知道I2C总线是1995年,项目中用到电视机高频头(也叫调谐器、Tuner),能够方便买到的高频头要么是飞利浦(Philips)的,要么是日系厂商的,但日系厂商联系起来比较费劲。Tuner其实就是通过I2C总线送控制字来改变其本振频率(LO)选择你需要的频段,当时知道I2C的鼻祖就是飞利浦半导体(NXP-恩智浦半导体的前身),也是第一次使用MC34063这颗后来如同555一样扑街的开关稳压...

2019-05-04 16:51:52 4316

转载 使用示波器的正确姿势

我们都知道万用表(又称欧姆表)是工程师最常用的调试电路的工具,但万用表的功能非常有局限,如果你需要观察一些随时间变化的参量,比如频率、幅度、噪声等等,示波器就是最好的选择。那我们先看看示波器是什么?主要的用途是什么?示波器的主要用途就是将随时间变化的电信号以图形的方式画出来,多数的示波器是用时间为x轴,电压为y轴产生的二维图形。横轴为时间,纵轴为电压在示波器屏幕周边的控制按...

2019-05-04 16:48:55 3253

原创 usb转串口,232电平,TTL电平

TTL电平:一般用作数字芯片的电平(单片机大多是TTL电平,只是不同的电压标准)232电平:232电平特制电脑串口的电平USB:除去屏蔽层,有4根线,分别是VCC、GND和D+、D-两根信号线。5V是USB的电源电压,给USB device供电用的。信号线对于2.0, D+比D-大200mV时为1,D-比D+大200mV时为0,属差分信号,与TTL电平不兼容,信号传输时需要电...

2019-05-04 16:44:10 8441

原创 物联网名词和MQTT解释,阿里云的教程:用51单片机做一个物联网温度计+远程开关

https://mvp.aliyun.com/zhidao/1915本章主要介绍物联网平台中相关的产品名词。明白名词说的是啥。两眼不慌慌。看看官方文档吧concent   报文连接服务器     PUB   发布   SUB  订阅    PING  PONG   Disconcent  断开连接   unsub  取消订阅   CleanSession  清理会话(设备掉线或断开时,...

2018-12-17 15:35:54 4760

转载 MQTT协议如何工作?

 MQTT协议是什么?MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发布/订阅模式的消息传输协议(可理解为一种通信规则),运行在TCP协议栈(通俗理解为自己电脑上连接的网络)之上,为其提供有序、可靠、双向连接的网络连接保证。对TCP的本质理解可以参考这篇博文,讲的客户端和服务...

2018-12-06 18:17:36 789

转载 深度理解TTL电平与CMOS电平的异同

一:TTLTTL集成电路的主要型式为晶体管-晶体管逻辑门(Transistor-Transistor Logic gate),TTL采用5V电源。  1. 输出高电平Uoh和输出低电平UolUoh≥2.4V,   Uol≤0.4V在室温下,一般输出高电平为3.5V2. 输入高电平Uih和输入低电平Uil    Uih≥2.0V,    Uol≤0.8V3. 噪声容限0....

2018-10-12 20:15:59 775

转载 50条STM32单片机学习笔记

   重要    ——        另一篇博文STM32单片机学习笔记 1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用3、HSE Osc(High Sp...

2018-08-28 21:00:56 3389

转载 带你快速认识CMOS管

转载----张飞电子三极管是流控型器件,MOS管是压控型器件,两者存在相似之处。三极管可能经常用,但MOS管你用的可能较少。对于MOS管先抛出几个问题: 如何区分P-MOS和N-MOS; 如何区分MOS的G、D、S管脚; MOS管的寄生二极管方向如何; MOS管如何导通; 带着这几个问题,再看下面的内容,你会理解的更快、更多。       ...

2018-07-29 20:02:10 6731

原创 关于-3db截止频率

电流,电压等中 10*lgX=1dB; 功率中 为20*lgX = 1dB.区别只是表示是功率还是电流等啦。功率都是20*lgX.其他10*lgX.上面的关系就是平方, 10*lgX² = 2*10 lgX. 其实就是功率与电压或电流是平方关系啦(公式,),不要把这两个混了。下面的内容随便看看吧。关于-3db截止频率为什么当信号衰减了-3db的时候就算是截止频率了。这里面...

2018-05-23 15:02:17 34414 3

原创 海思hi3516dv300 配置uart3

目前uart3只能发送,不能接收。通过Hi3516DV300 专业型 Smart IP Camera SoC 用户指南.pdf文档得到hi3516dv300共有5个串口,参考:1.海思HI35xx平台串口配置方法_dosthing的博客-CSDN博客前言串行接口简称串口(通常指COM接口),是采用串行通信方式的扩展接口,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,但传送速度一般,数据传输率为115kbps~230kb..

2021-12-05 10:05:55 1995 6

原创 hi3516dv300 nand flash 烧写uboot,kernel,rootfs记录

hi3516dv300 nand flash 烧写uboot,kernel,rootfs

2021-12-01 11:31:47 4425

原创 conda安装编译好了的caffe, ImportError: cannot import name ‘_validate_lengths‘

keras/tensorflow1.x模型转换为caffe推理模型,之前按照这篇博文安装编译好的caffe-gpu,过程没有出现问题。把环境删除在新建环境顺序安装caffe-gpu、tensorflow1.13.2、keras2.2.4后,验证出现问题,如下:(ycqcaffe) ycq@smtu226-ThinkStation-P500:~$ pythonPython 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 13:51:32

2021-09-07 20:38:52 776

原创 Anaconda 的使用

Anaconda介绍…Anaconda 安装…conda进行环境的管理检查conda在使用conda前,我们先检查conda是否已经被安装,以及当前版本是否是最新。# 检查conda是否已经安装好,此命令会返回你安装Anaconda软件的版本conda --version>> conda 4.3.40# 通过以下命令升级conda到最新版本# 如果有新版本可用,在提示proceed ([y]/n)? 中输入y进行升级conda update conda环境管理如果

2021-03-11 16:55:13 312

原创 合宙NB-IOT模块Air302连接Tlink云平台,APP和微信控制灯开关

首先要会Lua、MQTT通信协议等知识。先注册Tlink云平台账号(网址),注册成功后找到开发者中心,查看Tlink云平台的MQTT协议说明。添加一个设备,把模块的电压,信号强度和灯状态上传云平台,链接协议选MQTT。Air302模块与Tlink云平台通信使用Json格式通信。在Tlink云的开发者中心查看MQTT通信格式要求,写程序会用到,如下:连接域名和端口号:每一种协议的连接服务器地址和端口号都不一样,请登录平台>设备管理>进入设置连接界面查看。客户端ID:发布和订

2020-11-11 20:10:21 2441 3

原创 FreeRTOS 学习记录2

1 FreeRTOS配置文件详解作用:裁剪系统的功能。FreeRTOS 提供丰富的组件和功能,为了适应资源内存不同的处理器,所以要裁剪一些系统功能,1.1 FreeRTOS与内内核配置相关通过宏的方式来操作,类似寄存器的操作。 uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */#define configUSE_PREE.

2020-07-02 12:30:10 349

原创 FreeRTOS 学习记录1

1 内存分布一个程序包含两个部分:1.只读区(代码区),代码区里有代码和只读数据。(代码区就是程序编译后生成的二进制文件,存在你的硬盘里)2.读写区(变量区),变量区有全局变量,堆,栈。栈(stack):是由进程分配的临时变量的区域;堆(heap):是自己开辟出来的空间,C语言里有calloc ,malloc函数来开辟空间,由free释放。java由new开辟,有自动回收机制。内存分区:可以分为5个区 ...

2020-07-01 11:43:19 2433

原创 RT-Thread学习记录15 内存池的使用

以下为看视频笔记..........1. 内存池的介绍动态内存堆可以分配任意大小的内存块,非常灵活和方便。但其存在明显的缺点:一是分配效率不高,在每次分配时,都要进行空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread提供了另外--种内存管理方法:内存池(MemoryPool)内存池是一种内存分配方式,用于分配大量大小相同的小内存块。使用内存池可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。RT-Thread的内存池支持线程...

2020-06-16 18:43:39 2502

原创 RT-Thread学习记录14 软件定时器的使用

以下为看视频笔记..........软件定时器是由操作系统提供的一:类系统接口,它构建在硬件定时器基础之上(系统滴答定时器)。软件定时器使系统能够提供不受数目限制的定时器服务。RT-Thread操作系统提供的软件定时器,以系统节拍(OSTick)的时间长度为定时单位,提供了基于系统节拍整数倍的定时能力,即定时数值是OSTick的整数倍。例如一个OS Tick是10ms,那么上层软件定时器只能提供10ms,20ms,,100ms等时间精度的定时服务,而不能定时为15ms、25ms、35ms等。..

2020-06-16 15:48:53 2797 1

原创 RT-Thread学习记录13 消息队列的使用

以下为看视频笔记..........1. 消息队列工作机制消息队列是RT-Thread中另一种常用的线程间通信方式,消息队列是对邮箱的扩展。消息队列能够接收来自线程或中断服务例程中发出的不固定长度的消息,并把消息缓存在自己的内存空间中,而其他线程能够从消息队列中读取相应的消息并进行对应的处理。2. 消息队列控制块消息队列控制块是操作系统用于管理消息队列的一个数据结构struct rt_messagequeue{ struct rt_ipc_object par

2020-06-15 22:24:24 686

原创 RT-Thread学习记录12 邮箱的使用

以下为看视频笔记..........1. 邮箱的工作机制RT-Thread操作系统的邮箱用于线程间通信(邮箱具有数据交互功能,但互斥量、信号量等IPC没有数据交互功能),特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳 固定的4字节内容 (针对32位处理系统,指针的大小即为4个字节,所以一封邮件恰好能够容纳一个指针)。线程或中断服务例程把一封4 字节长度的邮件发送到邮箱中,而其他需要的线程可以从邮箱中接收这些邮件并进行处理。“2. 邮箱控制块在RT-Thread中,..

2020-06-15 16:53:06 1368

原创 RT-Thread学习记录11 事件集的使用

以下为看视频笔记..........1.例说事件集以坐公交车为例说明事件集,在公交站等公交车时可能有以下几种情况:①P1坐公交车去某地,只有一趟公交车可以到达目的地,等到此公交车即可出发。②P1坐公交车去某地,有3趟公交车都可以到达目的地,等到其中任意一辆即可出发③P1约另一人P2一起去某地,则P1必须要等到“同伴P2到达公交站”与“公交车到达公交站”两个条件都满足后,才能出发。这里,可以将P1去某地的这个行为视为线程,将“到达目的地的公交车到达公交站”、“同伴P2到达公交站”视为事件的发生,.

2020-06-14 17:14:21 690

原创 RT-Thread学习记录10 线程的优先级翻转

以下为看视频笔记..........1.优先级翻转使用信号量会导致的另一个潜在问题是线程优先级翻转问题。所谓线程优先级翻转,即当一个高优先级线程试图通过某种互斥IPC对象机制访问兵享资源时,.如果该IPC对象已被-低优先级的线程所持有,而这个低优先级线程在运行过程中可能又被其它--些中等优先级的线程抢占,因此造成高优先级线程被许多具有较低优先级的线程阻塞的情况。优先级翻转会造成高优先级线程的实时性得不到保证。{图中M代表共享资源,A,B,C代表线程}2. 优先级继承在RT-Th.

2020-06-12 16:31:10 539

原创 RT-Thread学习记录9 互斥量的使用

以下为看视频笔记..........1. 例子说明互斥量我们来看一个生活中的例子:现在大多银行ATM机都有一个特制的铁门。需要使用ATM的用户都需要在门前排队,进入铁门]使用ATM机的用户进入后会在里面将铁门锁住,以保障自身安全,这个时候,在门外排队的用户无法使用.ATM机;当之前锁住ATM铁门的用户办理完业务,打开门以后,其他在外排队的用户才可以进入铁门使用ATM,这位进入铁门的用户也会和前一个用户一样,将门锁住,保障自身的安全。例子中ATM机就相当于系统中的共享资源,需要使用ATM的用户

2020-06-11 18:44:43 696

原创 RT-Thread学习记录8 生产者消费者问题

1.生产者消费者问题模型生产者消费者问题是一个经典的、多线程同步问题。有两个线程:--个生产者线程和一个消费者线程。两个线程共享-个初始为空、固定大小为n的缓存区。.生产者的工作是“生产”-段数据,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待,如此反复;同时,只有缓冲区非空时,消费者才能从中取出数据,-次消费--段数据,否则必须等待,如此反复。问题的核心是:1.1 要保证不让生产者在缓存还是满的时候仍然要向内写数据;1.2 不让消费者试图从空的缓存中取出数据。...

2020-06-10 22:18:59 694

原创 RT-Thread学习记录7 信号量的使用

以下为看视频笔记..........1. 信号量(IPC)在嵌入式系统中运行的代码主要包括线程和中断(ISR),在它们的运行过程中,它们的运行步骤有时需要同步(按照预定的先后次序运行),它们访问的资源有时需要互斥(一个时刻只允许一个线程访问资源),它们之间有时也要彼此交换数据。这些需求,有的是因为应用需求,有的是多线程编程模型带来的需求。操作系统必须提供相应的机制来完成这些功能,我们把这些机制统称为进(线)程间通信(InternalProcessCommunicationIPC),RT...

2020-06-09 18:28:01 434

原创 RT-Thread学习记录6 临界区保护

以下为看视频笔记..........1.临界区概念临界资源是指一次仅允许一一个线程访问的共享资源。它可以是一个具体的硬件设备(如打印机等),也可以是一个变量、一个缓冲区。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它们进行访问每个线程中的访问(操作)临界资源的那段代码称为临界区(Critiacl Section),我们每一次只允许一个线程进入临界区。/*程序的目的先把全局变量value值加到10000,在赋值为500.注意顺序。演示全局变量value为临界区资源,两

2020-06-07 16:27:35 749

原创 RT-Thread学习记录5 空闲线程及常用的钩子函数

以下为看视频笔记..........空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。空闲线程还负责一些系统资源回收以及将一-些处于关闭态的线程从线程调度列表中移除的动作空闲线程在形式上是一个无线循环结构,且永远不被挂起。在RT-Thread实时操作系统中空闲线程向用户提供了钩子函数,空闲线程钩子函数可以让系统在空闲的时候执行一-些非紧急事务,例如系统运行指示灯闪烁,CPU使用率统计等等。像图中的 tshell 和 tidl.

2020-06-07 12:19:32 2430

原创 RT-Thread学习记录4 线程的时间片轮询调度

以下为看视频笔记。。。。1.线程的优先级优先级和时间片是线程的两个重要参数,分别描述了线程竞争处理器资源的能力和持有处理器时间长短的能力。RT-Thread最大支持256个优先级(数值越小的优先级越高,0为最高优先级,最低优先级预留给空闲线程);用户可以通过rt_config.h中的RT_THREAD_PRIORITY_MAX宏来修改最大支持的优先级;针对STM32默认设置最大支持32个优先级;具体应用中,线程总数不受限制,能创建的线程总数只和具体硬件平台的内存有关2.线...

2020-06-05 21:11:17 858

原创 RT-Thread学习记录3 简单的线程实例—跑马灯实验

线程状态转换图

2020-06-05 18:54:17 1243

原创 RT-Thread学习记录2 线程的创建

看视频笔记如下。。。。在RT-Thread中,与上述小任务对应的程序实体就叫做“线程”(或任务),RT-Thread就是一个能对这些小“线程”进行管理和调度的多“线程”操作系统。线程是实现任务的载体,它是RT-Thread中最基本的调度单位,它描述了一个任务执行的运行环境,也描述了这个任务所处的优先等级。RT_Thread中,线程有三部分组成:线程代码(入口函数),线程控制块,线程堆栈。线程代码如下:1.无限循环模式void thread_entry(void *parameter..

2020-06-04 21:00:16 394

原创 RT-Thread学习记录1 动态内存的使用

先使用Keil软件仿真运行程序学习,RT-Thread Simulator 例程,例程结合B站视频一起学习。程序包括多个例程。以下为看视频的笔记。。。。栈(stack):有编译器自动分配释放堆(heap):一般有程序员分配释放int a = 0; //全局初始化区char *p1; //全局未初始化区mian(){ int b; //栈 char s[] = "abc123"; //栈 char *p2; //栈 char *p3 = "123654

2020-06-04 19:39:45 438

原创 STM32的HAL库的SPI调试LD3320通信

厂家提供的STM32固件库程序移植到HAL库,程序修改完成,但SPI读写LD3320寄存器失败,一开始想各种原因,排除,上示波器,又买了逻辑分析仪抓取波形..........一通操作猛如虎,从19年改代码到20年,哈哈哈哈。最后发现原因是HAL库读写寄存器函数没有严格按照数据手册提供的SPI读写时序来。时序如下图。这个问题也算为自己积累了经验吧。最后附上逻辑分析仪抓取的波形,如...

2020-01-04 20:26:27 3975 6

转载 嵌入式C语言编程小知识

1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。2. 在LPC2200系列中:可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;j&l...

2019-05-23 18:39:43 401

转载 嵌入式实时系统中局部变量和全局变量

一、首先简要介绍局部变量和全局变量区别(1)作用域全局变量具有全局作用域,适用于所有源文件。但在不包含全局变量定义的文件中,需使用extern关键字声明这个全局变量后,方可正常使用。静态全局变量也具有全局作用域。它与全局变量的区别是,它仅仅作用于定义它的文件,程序中其他文件不可用。局部变量只有局部作用域。只在函数执行期间存在,当函数调用结束后,变量将被撤销,其所占用内存被收回。...

2019-05-23 18:34:20 2488

转载 #if、#else、#endif、#elif、#ifdef、#ifndef的区别和使用

常用的条件编译#if, #elif,#else,#endif,#ifdef、#ifndef看名字就知道,跟我们平时用的if、elseif、else是 一样的,不同的是这里一定要记得 #endif。#if 条件 1 代码 1#elif 条件 2 代码 2#else 代码段 n+1#endif意思跟我们平常写的代码一样,如果条件1成立,则编译代码1,如果条件二成立,则编...

2019-05-23 18:26:50 25232

转载 模电精髓“200问”

1、半导体材料制作电子器件与传统的真空电子器件相比有什么特点?答:频率特性好、体积小、功耗小,便于电路的集成化产品的袖珍化,此外在坚固抗震可靠等方面也特别突出;但是在失真度和稳定性等方面不及真空器件。2、什么是本征半导体和杂质半导体?答:纯净的半导体就是本征半导体,在元素周期表中它们一般都是中价元素。在本征半导体中按极小的比例掺入高一价或低一价的杂质元素之后便获得杂质半导体。3、空穴是一...

2019-05-04 16:33:35 1980

原创 STM32库的理解

最后在用keil 建立自己工程把上图中的文件(.c文件)加入到你的项目中去。keil指定好.h文件路径。以上截取上课的PPT,方便自己随时查看。不过操作起来还是有难度的,对小白不友好。在建立的STM32库时,有错误随时百度,建议用(www .bing.com 你懂的)注意: 在向keil u5 中添加文件是不要漏加启动文件(startu...

2019-03-29 14:54:59 340

转载 「详细」搭建Linux下STM32开发环境

转载微信公众号 点击链接MDK+Jlink的开发环境集编译、下载、调试为一体,配合上友好的操作界面,给用户者提供了很Happy的开发工具。但是,曾经玩过Linux系统的人总想尝试对开发环境的一次搬移,转战到Linux下看有什么事情发生。  在Linux下,搭建STM32的开发环境是一种具有挑战性的任务,从中我们能学到如何创造一个集成开发环境,或者说我们知道集成开发环境的构成元素。不得不提出...

2019-03-29 14:15:42 1939 1

转载 什么是框架

框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。目前还没看到什么有趣的个人化解释,可能是因为要解决都复杂到设计出框架来解决的问题的人比大多数有情趣的人来说都更感觉boring吧,所以……嘿嘿!...

2019-02-28 11:11:50 12233

GitHub命令行笔记

本文档是GitHub的命令行学习总结常用的笔记,总结的很全面,都是大家使用频率高的,如果遗忘了,可以查看本文档,加强巩固了。

2018-10-02

STC15W4K.h

本文档完善了STC15W4K56S4标准头文件,适合STC15W4K系列,增加了大部分寄存器的地址定义,把他添加到keil的inc文件下就可在工程中引用了,省去自己去定义寄存器的麻烦,查找本头文件引用即可,方便高效。

2018-10-02

单片机自学网51_单片机宝典_内部电路讲解

单片机自学网单片机宝典,关于内部单片机电路讲解,对于新手还是老手都值得借鉴,让我们更深入了解单片机电路的构造,知其然,知其所以然。值得大家一看。

2018-09-07

STC15W4k器件手册

STC15W4K32S4 系列单片机器件手册,包括单片机型号STC15W4K16S4,STC15W4K32S4,STC15W4K40S4,STC15W4K48S4,STC15W4K56S4,STC15W4K58S4,STC15W4K61S4,STC15W4K63S4.

2018-07-31

nrf24l01&C51;单片机收发成功程序

本程序是测试nrf24l01之间通信,使用C51单片机作为主控。程序首先判断MCU与NRF之间通信是否正常,正常点亮两个LED灯(收发程序都有判断)。接收的程序,当收到信息时,点亮两个LED灯,并同时通过串口打印出收的的信息(本程序发的是十六进制的数字1和 2)。

2018-06-26

STM32 二维码

本代码在STM32和UCOS嵌入式系统里生成微信名片二维码

2017-05-05

空空如也

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

TA关注的人

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