7 猪哥-嵌入式

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3k+

STM32L151C8T6和STM32L151C8T6A的区别

我们在使用STM32L151这款超低功耗芯片的时候,容易混淆尾缀“A”,这里的“A”可以理解为 advance,也就是说,STM32L151C8T6A是STM32L151C8T6的高级版,哪高级了呢? 主要是RAM的大小,来看下官方手册里的资源表:首先是订货号中的分析:“C”代表48Pin, 8代表64K的flash,T代表LQFP的封装,6代表工业级温度(-40~85℃),所以我们能确定的是,STM32L151C8T6和STM32L151C8T6A的Flash都是一样的64K。...

2020-07-14 18:55:18

NUC980 IOT 实验板快速测试详细流程及注意

本文简单的做下关键点笔记,NUC980 IOT的官方提供的实验板烧录方式可以参考官方提供的文档,这里就不赘述了,参考NUC980 IOT实验板做了一款精简版的 实验板,外围资源 包括:1、CPU(NUC980DK61Y)2、SPI Nand Flash(W25N01GVZE1G)3、USB 调试串口。4、USB Host5、SD卡。5、以太网口(Eth0)6、UART1/2/3/4.配置选择编译内核流程1、安装交叉编译器 arm-linux-gcc...

2020-06-10 22:06:18

sprintf、snprintf、vsprintf、vsnprintf格式化函数分析

格式化输入、可变参数表格式化输入。

2020-05-29 10:42:04

fcntl函数的作用及应用场景

在unp书中,关于函数fcntl的参数讲解的比较多,但是这个函数功能只有简单的一句话“fcntl函数可以改变已经打开文件的属性”。我们知道,在Unix/linux环境下,不管是设备、I/O、socket等等,几乎一切都是文件,所以fcntl的功能就是对于这些设备、文件、I/O的属性进行设定,比如常用的功能:1、复制一个已有的描述符,类似于dup函数功能。2、获取/设置文件描述符标志。3、获取/设置文件状态标志。4、获取/设置一步I/O所有权。5、获取/设置记录锁。fcntl的功能很强大,也很全

2020-05-26 22:35:04

linux下 O_NONBLOCK与O_NDELAY的区别

在上一篇文章《linux下“阻塞”与“非阻塞”的定义及区别》中,我们分析了阻塞和非阻塞两种模式,与“非阻塞模式”相关的有两个 标志,就是 O_NONBLOCK与O_NDELAY,这两种参数的结果都是使I/O操作设置为“非阻塞模式”,也就是non-blocking,当进行read/write操作时,不管结果如何,都会马上返回,而不会阻塞。他们的区别是:在read时,如果读不到数据,O_NDELAY会返回0,由于正常读取到文件末尾时,也会返回0,这样就无法区分是否是遗产隔离,所以就引入了O_NONBLOCK,

2020-05-26 22:23:02

linux下“阻塞”与“非阻塞”的定义及区别

前言在unix/linux下,不管是设备、文档、可执行程序,对于内核来说,都是文件,都会涉及到open、read、write的操作,对于文件操作就有了“阻塞”和“非阻塞”的概念了,我们以串口设备来举例分析这两种概念,首先保证,我们已经打开并初始化一个串口。“阻塞”的定义对于 read,当串口的接收缓冲区没有数据的时候,read函数会阻塞在那里,不返回,程序也无法下一步执行,一直到串口的接收缓冲区中有数据可读时,read读到了想要长度的字节数后才会返回,返回值为读到的字节数。对于write,当串口发送

2020-05-26 21:55:21

dup函数分析及应用场景

dup应用场景分析Unix系统中支持不同的进程共享的打开文件,dup函数可以复制一个现有的文件描述符,这里的“复制”不是说dup返回完全一样的文件描述符,那是没有意义的。而是返回一个当前可用文件描述符中的最小数值,通过这一新的文件描述符也可以访问该文件。“共享”的分析上面提到了“共享”,对于刚接触文件描述符的人来说,可能会有些疑问,为什么要“共享”,将文件描述符作为一个“全局变量”访问不是很方便吗?有这种想法的,往往是因为我们大多数情况下的应用范围都是仅限于1个进程,即便1个进程下有多个线程,对于单进

2020-05-23 22:44:44

strerror和perror函数的用法及区别

strerror原型#inlcude <string.h>char *strerror(int errnum);strrerror 函数将errnum映射为一个出错消息字符串,并返回该字符串指针,这里的“字符串”是Unix中已经定义好的常量字符串。perror原型#inlcude <stdio.h>void perror(char *msg);perro函数是基于当前的errno值,在标准错误(控制台)上输出一条出错消息,它首先输出由msg指向的字符串,然后跟一个冒

2020-05-20 22:29:26

变频器等设备在工业控制系统中的“干扰”分析3:变频器是怎样干扰PLC或其他控制器的

本系列文章参考了西瓜视频-杨继深老师的《深讲电磁兼容》相关视频内容,这里向杨老师致敬。 在前面的文章中:《90%的电磁干扰问题是共模电流导致》《变频器的共模电流》 我们分析了共模电流的概念,也了解到了共模电流是产生干扰的主要源头,那么本文就简单分析,变频器的共模电流是如何干扰PLC或其他控制器的。通过前面文章的分析,我们应该能知道答案,一般情况下,变频器是通过地线来干扰PLC或其他控制器的。 变频器会在地线上产生共模电压,也就是“地线噪声”,驱动产生“地线”产生地线电流...

2020-05-12 22:55:26

变频器等设备在工业控制系统中的“干扰”分析2:变频器的共模电流

本系列文章参考了西瓜视频-杨继深老师的《深讲电磁兼容》相关视频内容,这里向杨老师致敬。在上一篇文章《90%的电磁干扰问题是共模电流导致》中提到了共模电流的概念,本文进一步说明变频器的共模电流。变频器的控制回路,如下图所示: 很明显,我们需要的是差模电流,共模电流是干扰信号,共模电流通过杂散电容,在“地线”上会产生地线电压,也会产生电磁辐射,会干扰周边其他的电子设备。 共模电压的产生,主要是因为跟变频器里的频繁脉冲有关。小结:1、变频器的共模电流就是电机定子...

2020-05-12 22:37:17

变频器等设备在工业控制系统中的“干扰”分析1:90%的电磁干扰问题是共模电流导致

本系列文章参考了西瓜视频-杨继深老师的《深讲电磁兼容》相关视频内容,这里向杨老师致敬。 工业控制系统中,变频器是比较常见的容易产生电磁干扰的设备,不管使用的是PLC,还是小型嵌入式硬件设备,都有可能被变频器干扰。我的专业方向是嵌入式硬件产品开发,所以干扰问题经常遇到,有时候也是没有很好的办法去解决,一般要么是加外置的隔离器,要么就是在软硬件上做一些辅助性的措施,但是对于其中的干扰原理,比较肤浅,这个主要是因为“干扰”本身是一种看不见摸不着的东西,有些人戏称为“玄学”。 查阅相关的资...

2020-05-12 22:26:14

数组的优点就是链表的缺点,链表的优点就是数组的缺点

本文的标题是无意中看到的一句话,是(qq_37839971)对某篇文章的回复,这句话可能不太严谨,但是概括性很强,概括了数组和链表数据结构的部分优缺点,数组是一种顺序存储线性表,最大的优点是可以快速的存取表中任一位置元素,而缺点就是表长度不够灵活,而且想要插入、删除操作时,需要移动大量的元素。链表数据结构可以说是一种有强关联的数据结构,表长度灵活,可以随时增加删除,插入或删除操作也不需要移动太多...

2020-05-04 22:17:10

使用C 实现的 开源消息队列 cQueue

</>概述队列是一种非常好用的数据结构,消息队列可以提高业务逻辑的成功率,在Unix/Linux下,消息队列还是进程之间通信的一种技术方案,关于队列数据结构的知识点,可以参考之前的文章:深入理解数据结构(一):队列队列的功能虽然很好用,但是如何编写一个文件的消息队列功能,还是有些难度的,本文参考uC/OS 操作系统的队列代码原理,编写了消息队列 功能,使用者可以将cQueue....

2020-05-03 21:30:19

调用free 后内存状态

malloc和free是常用的动态内存申请和释放函数,功能就不赘述了,尤其在调用 free 后,我们脑海中想到的就是释放之前申请的内存区域,那么我们再细究一下,调用free(p) 后,指针p值和 p指向的内存状态是什么样呢?说下答案吧:1、调用free(p) 后,p值不变。2、调用free(p) 后,p指向的内存的值不确定,有可能变,也有可能不变。这里就说明了一个容易忽略的结果...

2020-05-03 19:07:44

epoll 分析、应用场景及与select对比

在Unix/linux 中有 I/O 操作,I/O操作针对的是 文件,而linux下,“文件”概念是比较庞大的,不管是 普通文件还是硬件设备,还是socket连接、管道等等,都是文件,文件 最常用的3中操作就是 “读”、“写”、“异常”,我们经常使用的就是“读”操作,比如读取串口接收数据,读取socket 接收数据等等,文件的“读” 一般分2种,“阻塞”和“非阻塞”,对于这两种概念,我们举...

2020-04-25 22:27:27

buildroot的作用简单分析

buildroot 是linux平台下的一种构建嵌入式Linux系统的框架,这个工具在刚开始接触的时候,觉得有点懵? 这玩意儿能够构建系统内核、u-boot、根文件系统?太夸张了吧,后来经过使用发现,这个工具还真 可以,只不过实现的方式比较意外。Buildroot是由Makefile脚本和Kconfig配置文件构成的,对于构建内核、u-boot,它是 需要 写好脚本,从芯片厂家提供的下载链...

2020-03-30 22:24:47

理解CPU的 推挽、开漏输出以及应用场景

0- 概述在嵌入式CPU中,GPIO口都是可以设置成多种模式的,比如STM32的芯片 GPIO端口可以由软件配置成多种模式: 对于 输入模式和复用功能模式,都是比较容易理解的,但是 输出 推免输出和开漏输出,理解起来确实有些难度, 如果不理解这两种模式,那么对于这两种模式的应用场景,也是难以很好的理解的,接下来,我们就以STM32的 GPIO口的 结构为例,从电路的角...

2020-02-20 14:09:36

阿里云IOT C-SDK 源码分析系列(8): IOT_Linkkit_Report 分析

从函数名称上就可以知道,这个函数的主要功能是向云端发送消息,但是它的功能不仅仅如此,特别需要注意的就是,他还包含子设备登录/子设备退出功能。函数 原型如下:IOT_Linkkit_Report 原型int IOT_Linkkit_Report(int devid, iotx_linkkit_msg_type_t msg...

2020-02-08 21:09:49

阿里云IOT C-SDK 源码分析系列(7): IOT_Linkkit_Close 源码分析

该函数的功能是 关闭网络连接,并且释放Linkkit 的所有的占用资源。原型如下:IOT_Linkkit_Close原型int IOT_Linkkit_Close(int devid);接口说明若设备ID为主设备, 则关闭网络连接并释放Linkkit所有占用资源参数说明参数 数据类型 方向 说明devid int 输入 设备ID返回值说明值 说...

2020-02-08 20:48:51

阿里云IOT C-SDK 源码分析系列(6):IOT_Linkkit_Yield 用户 事件调度函数源码分析

在上一篇文章中,着重分析了 SDK的 核心调度线程yield,本文再简单的分析下用户 事件调度 API 接口函数,该函数 原型如下:IOT_Linkkit_Yield原型void IOT_Linkkit_Yield(int timeout_ms);接口说明若SDK占有独立线程, 该函数只将接收到的网络报文分发到用户的回调函数中, 否则表示将CPU交给SDK让其接收网络报文并将消息...

2020-02-08 19:28:45

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。