![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
嵌入式软件开发
文章平均质量分 79
嵌入式软件,嵌入式操作系统,嵌入式驱动开发
AI+程序员在路上
技术分享,互学共进~
展开
-
C语言的函数指针与指针函数
C语言的函数指针与指针函数 在C语言中,函数指针和指针函数是两个容易混淆但截然不同的概念。理解它们的区别对于深入理解C语言中的指针和函数非常关键。原创 2024-07-19 09:32:27 · 426 阅读 · 0 评论 -
100多个嵌入式软件开源项目集锦
100多个嵌入式软件开源项目集锦原创 2024-07-12 09:38:51 · 731 阅读 · 0 评论 -
POSIX互斥锁和条件变量
POSIX互斥锁和条件变量互斥锁和条件变量都是进程同步机制,通常,互斥锁是用来对资源加锁,条件变量用来等待资源,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号);由于是多线程,为了防止竞争,所以条件量一般和锁一起使用。原创 2024-07-09 16:50:42 · 731 阅读 · 0 评论 -
POSIX线程(pthread库)介绍及使用方法
POSIX线程(pthread库)介绍及使用方法OSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准,该标准定义了创建和操纵线程的一整套API。关于pthread.h支持的平台,以下是一些主要的说明:支持的平台类Unix系统:Linux:Linux系统广泛支持Pthreads,它是Linux下多线程编程的基础。通过pthread库,开发者可以在Linux环境下创建、管理和同步多个线程。Unix:传统的Unix系统也支持Pthreads原创 2024-07-06 14:53:58 · 887 阅读 · 0 评论 -
STM32基本定时器、通用定时器、高级定时器区别
一.STM32基本定时器、通用定时器、高级定时器区别STM32系列微控制器中的定时器资源分为基本定时器(Basic Timer)、通用定时器(General Purpose Timer)和高级定时器(Advanced Timer)三类,它们在功能和复杂性上有所不同。基本定时器主要用于实现简单的定时功能,没有外部IO接口,是内部资源。通用定时器除了基本的定时功能外,还支持输入捕获、输出比较、PWM生成等多种功能。高级定时器包含基本定时器和通用定时器的所有功能,并增加了更高级的功能。原创 2024-07-03 19:53:57 · 582 阅读 · 0 评论 -
C语言中宏定义控制日志输出及log库介绍
1.使用宏定义控制日志输出使用条件编译指令#if和宏定义来控制调试信息的输出:#define LOG_DEBUG 1#if LOG_DEBUG #define DBUG_PRINTF printf#else #define DBUG_PRINTF(...)#endif二.C语言轻量级log库1.log.c2.EasyLogger原创 2024-07-01 20:08:56 · 851 阅读 · 0 评论 -
嵌入式以太网硬件构成与MAC、PHY芯片功能介绍
以太网电路主要有以下几种情况:·CPU内部集成了MAC和PHY,难度较高;·CPU内部集成MAC,PHY采用独立芯片(主流方案);·CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片(高端采用)PHY整合了大量模拟硬件,而MAC是典型的全数字器件,芯片面积及模拟/数字混合架构的原因,是将MAC集成进微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合;所以常用的CPU内部集成MAC,PHY采用独立的芯片方案原创 2024-07-01 20:03:47 · 1067 阅读 · 0 评论 -
keil软件的一些使用技巧
keil软件的一些使用技巧头文件包含的技巧keil编译stm32有hal库的工程为何编译很慢解决快速注释与快速消注释原创 2024-06-29 11:52:06 · 416 阅读 · 0 评论 -
电机应用相关名词介绍
电机应用相关名词介绍额外转速(也称为额定转速)是指电机在额定电压、额定电流和额定负载的条件下运行时,电机的旋转速度。转差率又称“滑差率”,转速的表示方法之一,计算公式为S = (Ns - N) / N(r/min),其中Ns为同步转速,N为实际转速。电机堵转是指电机在启动或运行过程中,由于某种原因造成电机无法正常运转,即电机的转速降至零或接近于零,但仍保持电流流过的状态。例如,在50Hz的交流电源下,同步转速与电源频率之间的关系更为直接。定义:电机扭矩即电动机的输出扭矩原创 2024-06-27 20:00:24 · 452 阅读 · 0 评论 -
STM32单片机实现串口IAP升级
STM32单片机实现串口IAP升级1.要实现串口IAP升级,首先要编写一个bootloader程序,然后再写支持IAP的app程序;2.keil下bootloader的程序rom和ram设置3.app程序要用bin文件注:本文以STM32H743举例,其他stm32单片机IAP升级原理类似。原创 2024-06-27 19:55:48 · 1280 阅读 · 0 评论 -
STM32烧写hex及bin文件的五种方法
STM32烧写hex及bin文件的五种方法1.STVP是ST早期的一款下载编程工具,支持早期的ST早期的芯片(比如ST7系列),也支持STM8、 STM32。2.ST-LINK Utility3.STM32CubeProg 这款工具,是 ST 继前面两款工具之后新推出的一款工具,是目前主推的一款下载编程工具。4.CoFlash 软件的最新版本是 CoFlash V1.5.1,发布时间为 2019 年 4 月 4 日;5.keil直接烧写hex文件原创 2024-06-23 11:48:25 · 2005 阅读 · 0 评论 -
Keil MDK生成LIB库以及使用LIB库
Keil MDK生成LIB库以及使用LIB库一.keil下lib静态库的使用具有以下优点:1.封装源代码,对外不开放,提高保密性。2.将标准功能函数封装成库,提高代码的复用性。3.使用库开发,简化开发流程,提高开发效率。4.系统调用库函数,提高执行效率。原创 2024-06-22 09:55:01 · 805 阅读 · 0 评论 -
STM32三种调试工具CMSIS-DAP、J-Link和ST-Link
STM32三种调试工具CMSIS-DAP、J-Link和ST-LinkMSIS-DAP、J-Link和ST-Link均是嵌入式处理器的开发调试工具。CMSIS-DAP是一种轻量级调试接口,旨在实现开源的开发调试。它的优点是使用方便、通用性好、成本低,还支持固件的在线升级。J-Link是一款由德国公司SEGGER Microcontroller开发的高性能调试工具。但是价格较高。ST-Link是由意法半导体公司开发的专为ST微控制器设计的工具。ST-Link使用简便,价格也比较亲民原创 2024-06-22 09:43:59 · 1404 阅读 · 0 评论 -
如何用 STM32CubeMX 创建项目并导入 Keil5
如何用 STM32CubeMX 创建项目并导入 Keil5STM32CubeMX在“Project”菜单中,你需要设定项目的名称和存储位置。同时,在“Project Settings”部分,你可以选择目标编译器/IDE。对于此教程,我们选择“MDK-ARM”,即Keil5。打开Keil uVision5,选择“Project” -> “Open Project”导航至你的项目文件(通常是一个带有.uvprojx扩展名的文件)。打开后,Keil5将加载项目结构和配置,你可以看到已经生成的源代码文件。原创 2024-06-21 09:34:43 · 543 阅读 · 0 评论 -
STM32多种开发环境及生成hex及bin文件介绍
STM32多种开发环境及生成hex及bin文件介绍keil5 STM32CubeIDE EWARM如果不考虑商业应用keil的比较好,如果考虑商业付费用STM32CubeIDE更好一些,毕竟是免费的。原创 2024-06-21 09:32:05 · 813 阅读 · 0 评论 -
STM32单片机选型方法
一.STM32单片机选型方法1.首先要确定需求:性能需求:根据应用的复杂度和性能要求,选择合适的CPU性能和主频。内存需求:确定所需的内存大小,包括RAM和Flash存储空间。外设需求:根据应用所需的功能,选择具有相应外设的单片机,如USB、CAN、ADC、DAC、I2C、SPI等。电源需求:考虑单片机的电源电压范围和功耗要求。2.需求确定后就可以到官网进行选型(1)网址:https://www.stmcu.com.cn/Product/pro_detail/PR原创 2024-06-15 09:43:30 · 746 阅读 · 0 评论 -
嵌入式C语言编码规范要点
嵌入式C语言编码规范要行首使用四个空格缩进(或者是tab键,但要确认tab键是4个空格)对齐,其他地方通常使用空格保持对齐,而不是tab。注释允许使用 (/* comments */) 或 (// comments) 式样。帕斯卡命名法((pascal),也叫大驼峰命名法(Upper Camel Case)指针在使用之前要检查是否为空,同时如果内存释放了,指针要被设置成NULL。函数原型中的指针参数如果不是用于修改就必须声明为指向const的指针。宜用括号“()”明确表达式的操作顺序,避免使用默认优先级。原创 2024-06-11 20:26:12 · 381 阅读 · 0 评论 -
四种编程命名规则介绍
四种编程命名规则介绍一.骆驼命名法(Camel)二、帕斯卡命名法((pascal) 三.匈牙利命名法四.下划线命名法(也称为蛇形命名法)原创 2024-06-05 20:16:06 · 907 阅读 · 0 评论 -
linux常用命令及用法
一.linux系统下可以在帮助中查看每一个命令的用法:方法:cmd --help //例如: ls --help二.常用命令四.添加用户及设置用户组设置原创 2024-06-05 20:10:25 · 731 阅读 · 0 评论 -
RTOS嵌入式实时操作系统分类及介绍
操作系统分类一般可分为:通用操作系统(OS),手机移动端的iOS 、鸿蒙系统及 Android,实时操作系统(RTOS)两大类。而实时操作系统(RTOS)根据其运行的处理器不同可以进一步分为:CPU RTOS和MCU RTOS两类。下面介绍14种RTOS操作系统:原创 2024-05-22 20:16:25 · 1247 阅读 · 0 评论 -
嵌入式文件系统损耗均衡功能对比
嵌入式文件系统损耗均衡功能对比如果是NAND flash,采用UBIFS文件系统,比较好的实现了flash擦除、垃圾回收、损耗均衡等机制。如果是eMMC采用EXT系统,通过FTL转换层实现了flash的管理、垃圾回收、均衡磨损等功能。UBIFS更适用于嵌入式系统和闪存存储设备,而ext则更适用于Linux操作系统中的各种场景。原创 2024-05-18 19:05:47 · 678 阅读 · 0 评论 -
嵌入式C语言实现状态机
嵌入式C语言实现状态机状态机的实现的三个要素:状态、事件、响应。二.c语言代码实现1.一般实现方式if...else : 大堆if else, 一个函数写很长很长......swich...case : 搞一大堆一个函数写很长很长......2.表驱动法这种方式把状态和事件进行模块化分离,同时用一张表再连接起来,就从根本上解决了这个问题,而且时间和状态也多越能发挥出优势来,原创 2024-05-18 19:04:08 · 674 阅读 · 0 评论 -
电机及FOC算法介绍
电机及FOC介绍电机是一种可以在电能和机械能的之间相互转换的设备,其中发电机是将机械能转换为电能,电动机是将电能转换为机械能。发电机的主要用于产生电能,用途单一,但是电动机主要用于产生机械能,用途极其广泛。原创 2024-05-13 20:42:28 · 954 阅读 · 0 评论 -
编码器介绍与应用
编码器介绍编码器,是一种用来测量机械旋转或位移的传感器。这种传感器能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。其可和电机组装到一起用,反馈电机方向、转换角度的,然后电机根据反馈再动作纠偏,提升精度。原创 2024-05-13 20:34:09 · 621 阅读 · 0 评论 -
音频—WAV格式及写入wav文件代码实现
WAV文件格式WAV 文件格式是 Microsoft 的 RIFF 规范的一个子集,用于存储多媒体文件。wav 文件支持多种不同的比特率、采样率、多声道音频。wav 文件由若干个 RIFF chunk 构成,分别为: RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chun原创 2024-05-11 20:50:32 · 1179 阅读 · 0 评论 -
振动分析的一些概念
振动测试领域中,通常使用标准是ISO 10816系列标准,其要去使用有效值(RMS)来表示震动信号的能量大小,并提供一组限制值,以帮助用户评估机器的振动水平是否正常。1.位移:峰峰,半峰,RMS有效值,平均值(一般不太重要);傅里叶变换进行频域分析原创 2024-05-09 20:05:19 · 631 阅读 · 0 评论 -
CAN总线介绍及在ZYNQ 7020中的应用
一、CAN总线协议介绍1.CAN是 Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行通信协议。可以用来满足“多总线通信时,线束的数量过多”、“通过多个 LAN ,进行大量数据的高速通信”的需要。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。2.CAN总线通常由两根线组成。这两根线分别是CAN-High(CAN-H)和CAN-Low(CAN-L),它们共同实现CAN网络的通信。原创 2024-05-01 11:01:51 · 1139 阅读 · 0 评论 -
C语言高效学习、提升方法
C语言高效学习、提升方法C语言怎么学习、提升最快呢?个人觉得还是要从框架上去着手学习,用全局眼光去看、去学,主要是三部分:关键字及基本语法、重点功能点及标准库函数;只要把这三部分基本搞懂了,剩下就就是去刻意练习与项目实践,更熟练也就更精通,也就能写出架构更合理、更精妙的程序~原创 2024-04-27 12:35:44 · 1105 阅读 · 0 评论 -
算法复杂度介绍
算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机应用的早期,存储容量很小,所以对空间复杂度很是在乎。但现在计算机行业迅速发展,计算机的存储容量已经很高,所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2024-04-27 12:29:54 · 785 阅读 · 0 评论 -
C及C++标准与QT版本介绍
C及C++标准与QT版本介绍一.软件规范及组织GNU是“GNU's Not Unix”的缩写,是GNU计划(GNU Project)GPL全称是GNU General Public License,中文名为GNU通用公共许可证。3.POXIS(Portable Operating System Interface)System V是由AT&T开发的Unix操作系统的一个版本,在1983年首次发布。二.C语言与C++标准2.C++标准:三.QT版本与选择:注意:Qt6不支持Windows 7原创 2024-04-20 10:37:28 · 802 阅读 · 2 评论 -
预处理与宏定义
预处理,宏定义在C语言中,预处理阶段是代码执行之前的一个重要步骤,负责对源代码进行宏替换、条件编译等处理。预处理器提供了强大的工具,使得我们能够在编写代码时更加灵活、高效。原创 2024-04-19 09:27:39 · 633 阅读 · 0 评论 -
C语言面试常见问题汇总
C语言面试常见问题汇总原创 2024-04-18 09:31:07 · 543 阅读 · 0 评论 -
C语言中生成随机数的几种方式
C语言中生成随机数的几种方式1.rand介绍C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下所示:int rand (void);2.srand介绍C语言中还提供了一个函数叫srand用来初始化随机数的生成器的,srand的原型如下:void srand (unsigned int seed);3.time函数介绍在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下:time_t time (time_t* timer);原创 2024-04-12 20:42:17 · 4010 阅读 · 0 评论 -
c语言中三个open,fopen,popen的区别
c语言中三个open,fopen,popen的区别一.openOpen是unix系统调用函数(包括Linux),返回的是文件描述符,它是文件描述符表里的索引。二.fopenfopen是ANSIC标准中的C语言库函数,在不同的系统中应该调不同的内核api,返回的是一个指向文件结构的指针。三.popenFILE *popen(const char *command, const char *type);功能:popen()函数通过先创建一个管道,然后调用 fork 产生一个子进程,让子进程执行sh原创 2024-04-12 20:39:32 · 1141 阅读 · 0 评论 -
我的创作纪念日
继续写下去,从工作中总结学习,通过文章总结再促进理解,提升自己,也能让更多人能够看到、获益,也算是贡献自己的一点价值,让工作和生活更加充实~未来创作计划:现阶段会继续深耕QT领域技术,主要是当前工作用的比较多,思路和想法也比较多;后续可能会写一些c/c++,算法和数据结构及嵌入式操作系统freertos和linux的文章,这些也是自己工作中用到比较多也比较擅长的技术后续也可能分享一下行业知识,比如振动数据采集及数据分析技术,工业物联网协议原创 2024-01-27 08:55:51 · 351 阅读 · 0 评论 -
USB协议库libusb-1.0介绍
libusb是一个 C 库,提供对 USB 设备的通用访问。可移植的:使用单个跨平台API,它可以访问Linux,macOS,Windows等上的USB设备。用户模式:应用程序与设备通信不需要特殊特权或提升。libusb API接口:https://libusb.sourceforge.io/api-1.0/libusb GIT仓库:https://github.com/libusb/libusb.git。struct libusb_device_descriptor desc:设备描述符。原创 2023-09-18 16:58:14 · 1085 阅读 · 1 评论 -
USB调试工具与资料介绍
USB官网:https://usb.org/USBUSB中文网 :https://www.usbzh.com/USB Device Tree Viewer在微软USB viewer的基础上开发的USB设备信息的神器。可以方便的查看当前电脑连接了哪些usb设备,同时能够列出设备的详细信息;允许监控 USB 流量,检测 USB 设备软件,硬件和驱动程序开发过程中的错误和问题。Zadig是一个免费的USB驱动程序安装器,可以为您解决USB驱动程序相关的问题;同时也可以查看当前电脑有哪些usb设备。US原创 2023-09-18 16:53:25 · 577 阅读 · 1 评论 -
USB通信协议介绍
USB协议及USB通讯方式介绍;usb协议定义,USB端点介绍,USB通讯方式介绍,令牌包,USB从机枚举流程:设备描述符,配置描述符,接口描述符,端点描述符;当USB从机连接到USB总线上时,USB主机会检测有USB从机插入,同时USB从机通电并将USB描述符信息从非易失性存储器加载到描述符寄存器中,等到USB主机从寄存器中获取到USB描述符,就能知道USB从机的基本信息,在这个过程中,会给USB从机分配对应的设备地址。设备类型,设备版本号,设备序列索引,厂商ID(VID),产品ID(PID),厂原创 2023-09-18 16:47:21 · 3591 阅读 · 2 评论 -
嵌入式仪表的USB充电电流测量方法及工具推荐
一般来说嵌入式仪表的USB充电电流测量方法有三种:一.用万用表测量测试不方便二.电流钳测量价格昂贵三.USB测试仪1.这个工具也是本文重点推荐的,其优点是价格便宜,使用方便,只需要把它串接在usb充电线上即可。2.而且可以精确度较高,能满足基本需求3.价格便宜,只要几十元4.对一款USB测试仪做个简单介绍电压监测精度±(1%+5);电流监测精度 ±(1%+5)原创 2023-11-06 16:04:20 · 956 阅读 · 0 评论 -
嵌入式系统中SD卡驱动、FatFs、FTP server三者的关系及结合使用
FatFs文件系统就像一个有序的图书馆,可以帮助我们轻松地找到想要的数据,而不必担心仓库中数据的混乱。首先,我们来认识一下SD卡。SD卡是一种存储设备,它就像一个神奇的“口袋”,可以存储各种各样的数据,例如照片、音乐、视频等。总的来说,SD卡驱动、FatFs文件系统和FTP服务器就像一个“三剑客”,它们相互协作,为嵌入式系统提供了强大的功能和便利的操作体验。在嵌入式系统中,SD卡驱动、FatFs文件系统和FTP服务器三者之间存在着密切的关系,它们相互配合,为嵌入式系统提供了丰富的功能和便利的操作体验。原创 2023-11-06 14:55:36 · 136 阅读 · 0 评论