自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式技术开发

嵌入式技术交流与学习为目标

  • 博客(787)
  • 资源 (210)
  • 收藏
  • 关注

原创 Linux通信IPC随笔

名字: HLS大神 QQ:331908961**功能:Linux内核间任意通信实现**#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <unistd.h>#include <string.h>#include <stdio.h>typedef struct MSG

2021-03-26 11:28:26 621 3

原创 嵌入式单片机中can总线调试方法

CAN的基本应用不难,如果真正应用在项目中,需要考虑更多的协议处理,例如仲裁。通过CAN的学习,希望大家有数据链路层的概念。以后做项目,每一种通信,最好加上数据链路层,这样可以保证数据传输的可靠性。

2024-09-17 21:17:51 1548

原创 嵌入式DCMI摄像头功能调试方法

DCMI数字摄像头接口是一个同步并行接口,能接收外部8位、10位、12位或14位CMOS摄像头模块发出的高速数据流。可支持不同的数据格式:YCbCr4:2:2/RGB565逐行视频和压缩数据(JPEG)。此接口适用于黑白摄像头、X24和X5摄像头,并假定所有预处理(如调整大小)都在摄像头中执行。

2024-09-17 21:08:19 1052

原创 嵌入式C语言详解与实现

大家好,今天主要分享一下,如何使用嵌入式C语言,才能达到很高的水平,希望对大家有所帮助。

2024-09-16 22:27:48 364

原创 嵌入式单片机程序运行机制,从helloworld说起

如果程序A中引用了文件B中定义的函数,为了A中的函数能正常执行,就需要把B中的函数部分也放在A的源代码中,那么将A和B合并成一个文件的过程就是链接了。在过去的机器里都是把整个程序都加载进入物理内存中,现在一般都采用了虚拟存储机制,即每个进程都有完整的地址空间,给人的感觉好像每个进程都能使用完成的内存。上面是内容用具体的实例说了目标文件内部的组织形式,目标文件只是产生可执行文件过程中的一个中间过程,对于程序是如何运行的还没做讨论,目标文件是如何转变为可执行文件以及可执行文件是如何执行的将在下面的部分中讨论。

2024-09-16 22:10:51 797

原创 嵌入式单片机程序运行基本机理

硬件首先要知道硬件的组成。在前面章节我们说过,芯片包含Flash和RAM。他们虽然不是相同的东西,但是都属于同一个地址空间,32位芯片的地址空间大小是4G。比如ST32,FLASH通常从0X8000000开始,而RAM就从0x20000000开始。高级点的芯片,可能会有外部SDRAM,内核也会为这SDRAM分配一段地址。地址,就是地址,比如你们家的门牌号,酒店的房间号。TODO添加STM32芯片地址映射图。程序程序包含什么?写代码的时候包含函数过程和变量。编译得到的目标文件包含函数过程。

2024-09-15 23:08:38 1368

原创 嵌入式单片机中数码管基本实现方法

数码管是什么?下图就是一个数码管从硬件上个看,其实就是8个LED组合在一起。8个LED应该有16个引脚,但是数码管上只有10个引脚。为什么呢?请看下图:1个LED有两个引脚,要控制LED,1个引脚接控制信号,另外一个引脚接电源或者地(高驱动或低驱动,下同)。那么,当有8个LED,只需要8根IO口控制状态,其他IO全部接到地或者电源即可。当用高驱动时,LED负极全部接到地,这种数码管就叫做共阴极数码管。当用低电平驱动时,LED正极全部接到电源,这种数码管就叫做共阳极数码管。

2024-09-15 21:24:19 1566

原创 嵌入式单片机LCD驱动基本方法

在讨论怎么写LCD驱动之前,我们先大概了解一下嵌入式常用LCD。概述一些跟驱动架构设计有关的概念,在此不对原理和细节做深入讨论,会有专门文章介绍,或者参考网络文档。

2024-09-14 22:17:44 1349

原创 嵌入式单片机代码中bug调试方法

在开发的过程中,会遇到各种各样的问题,只要潜心分析,也一定会找到问题的解决办法。

2024-09-10 11:14:03 971

原创 嵌入式鸿蒙系统开发语言与开发方法分析

可复用的UI单元,可组合其它组件,如上述被@Component装饰的struct Hello。UI描述:声明式的方法来描述UI的结构,例如build()方法中的代码块。

2024-09-10 10:56:36 1311

原创 嵌入式Openharmony系统构建与启动详解

旨在构建统一的驱动架构平台,为驱动开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。为了实现这一目标,OpenHarmony 驱动框架:采用c语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。这个描述至少包含了以下3个关键的信息:

2024-09-08 23:09:52 3098

原创 嵌入式OpenHarmony源码基本原理详解

在3.0版本中,Lite系统(即轻量系统和小型系统)、标准系统各有一套独立的构建入口和上层的构建流程,但在3.2版本中,两者开始互相借鉴,取长补短并实现了融合统一;在3.0 版本中,标准系统的启动流程相对比较简单,但在3.1版本中,则引入了Randisk和TwoStages机制,标准系统的启动流程因此变复杂了,但安全性得到了提升;OpenHarmony 驱动框架的部分数据结构定义和局部的启动流程,在3.1版本中也有了不少调整和重构。

2024-09-08 12:02:53 566

原创 嵌入式OpenHarmony系统的一些特点

大家好,今天主要给大家分享一下,如何使用OpenHarmony,它的一些基本特点。

2024-09-05 23:00:00 162

原创 嵌入式OTG硬件电路分析

大家好,今天主要给大家分享一下,如何使用OTG硬件检测电路,和之前的接口有什么区别。

2024-09-02 20:08:10 1025

原创 嵌入式C语言的指针这样来理解

比如说你要我借给你一本书,我到了你宿舍,但是你人不在宿舍,于是我把书放在你的2层3号的书架上,并写了一张纸条放在你的桌上。需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。( )表示取值操作,整个表达式的意思是,取出地址 0X1000 和 0X2000 上的值,将它们相加,把相加的结果赋值给地址为 0X3000 的内存。有了它我们的生活才更加方便了。

2024-08-31 18:04:59 929

原创 linux系统中USB模块鼠标驱动实现

参考网址:* libusb GIT仓库:https://github.com/libusb/libusb.git* libusb 官网:https://libusb.info/* libusb API接口:https://libusb.sourceforge.io/api-1.0/* libusb 示例:https://github.com/libusb/libusb/tree/master/exampleslibusb是一个使用C编写的库,它提供USB设备的通用的访问方法。

2024-08-31 17:58:21 1667

原创 嵌入式软件开发之状态机与事件驱动分析

状态机是一种程序架构,事件驱动也是一种程序架构,在某些开发场景里面,两者是可以一同合并使用的。生活中有很多事件驱动的例子,上自习瞒着老师偷睡觉就是很生动的一个。我们都是从高中时代走过来的,高中的学生苦啊,觉得睡觉是世界上最奢侈的东西, 有时候站着都能睡着啊!老师看得严,上课睡觉不允许 啊,要挨批啊!有木有!相比而言,晚自习是比较宽松的,老师只是不定时来巡视,还是有机会偷偷睡一会儿的。现在的问题是,怎么睡才能既睡得好又不会让老师发现呢?晚自习是比较宽松的,老师只是不定时来巡视,还是有机会偷偷睡一会儿的。

2024-08-29 12:01:41 396

原创 嵌入式中详解STM32启动文件

栈的作用是用于局部变量,函数调用,函数形参等的开销,栈的大小不能超过内部SRAM 的大小。THUBM 是 ARM 以前的指令集, 16bit,现在 Cortex-M 系列的都使用 THUMB-2 指令集, THUMB-2 是 32 位的,兼容 16 位和 32 位的指令,是 THUMB 的超集。如果我们在使用某个外设的时候,开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,那当中断来临的时,程序就会跳转到启动文件预先写好的空的中断服务程序中,并且在这个空函数中无线循环,即程序就死在这里。

2024-08-29 11:46:37 705

原创 嵌入式RTOS正在缩小与Linux系统之间的差异

而且,现在实时Linux开始集成一些补丁(比如Ubuntu的PREEMPT_RT补丁),能够有效地为大多数实际的低延迟、低抖动工作负载提供服务,同时实现均衡的解决方案,从而减少开销并保持响应能力,最终减少维护成本,并使用有限的资源最大限度地提高。RTOS追求的是轻量级和极致的实时性(Real-time),通常是专为实时应用程序构建的,优先考虑任务执行的确定性和可预测性,使其在医疗、核能或航空航天等关键任务行业中得到广泛应用。在实时系统中,计算的正确性不仅取决于结果的逻辑正确性,还取决于它产生结果的时间。

2024-08-29 11:35:59 294

原创 linux系统中USB模块基本原理分析

大家好,今天主要给大家分享一下,USB设备的发展历程。

2024-08-26 20:16:53 134

原创 嵌入式linux系统中USB设备配置的基本方法

大家好,今天主要给大家分享一下,如何使用USB设备的基本方法。

2024-08-25 21:18:43 170 2

原创 嵌入式单片机中产品菜单设计框架详解

管得太宽 菜单,你就管菜单切换就行了,到了最低一层,也就是实际的测试功能,就不要管了。我想要的却是一个容易维护的菜单结构,至于菜单的代码有多乱多纠结,没关系, 而且,几百上千个菜单,就算用轮询的方法,也不过几百us吧,没关系。酷狗百度一番,找到了两个参考:《基于二叉树的多层的液晶菜单界面设计》 《基于节点编号的通用树状菜单设计方法与实现.pdf》 按照他们的设计方法,鼓捣了一个版本,能用,挺好,但是也纠结。第2个1级菜单有3个子菜单,子菜单是2级菜单,其中第1个子菜单下面又有2个孙菜单(3级菜单)。

2024-08-25 15:18:01 50

原创 嵌入式Keil工具【微库】和【标准库】的对比

C语言标准库,我们经常都会调用,比如:、 、 、 、 、 等库文件。因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。当然,在万不得已的情况下才建议修改原型函数。微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。

2024-08-25 14:35:16 329

原创 嵌入式linux内核模块编程底层原理详解

Linux 内核模块被精确地定义为能够动态 根据需要在 kernel 中加载和卸载。这些模块增强了内核 功能,而无需重新启动系统。一个值得注意的例子是 device driver 模块,便于内核与硬件组件交互 链接到系统。在没有模块的情况行的方法倾向于单体内核,需要将新功能直接集成到 kernel 镜像。这种方法会导致更大的 kernel 并且需要 kernel 当新功能出现时,重建和随后的系统重启 期望。

2024-08-25 11:03:54 193

原创 嵌入式C语言中常见的指针和内存异常分享

下面先看malloc 函数的原型: (void *)malloc(int size) malloc 函数的返回值是一个void 类型的指针,参数为int 类型数据,即申请分配的内存大小,单位是byte。比如上面的例子,我们可以说malloc 函数分配的内存块是属于p 的,因为我们对这块内存的访问都需要通过p 来进行。但是我们要知道,assert 宏只是帮助我们调试代码用的,它的一切作用就是让我们尽可能的在调试函数的时候把错误排除掉,而不是等到Release 之后。但是你却无法使用这块大小为0 的内存。

2024-08-22 23:09:14 170

原创 嵌入式C语言中函数宏基本操作方法

综上,在 {} 、 do{...}while(0) 和 ({}) 这三种函数宏的封装方式之中,应尽可能不使用 {} ,考虑兼容性一般选择使用 do{...}while(0) ,当需要函数宏返回时可以考虑使用 ({}) 或直接定义函数。因此,在工程中,一般使用三种方式来对函数宏进行封装,分别为 {} 、 do{...}while(0) 和 ({})。与 do{...}while(0) 相同, ({}) 支持在无花括号且有分支的 if 语句中直接调用。强制调用时必须使用。

2024-08-22 23:03:05 109 2

原创 嵌入式Linux系统中开机自启动方法

在很多嵌入式系统中,由于可用资源较少,常常在系统启动后就直接让应用程序自动启动,以减少用户操作和节省资源。如何让自己的应用程序自动启动呢?

2024-08-18 16:23:59 289

原创 嵌入式中PID算法分析与实现详解

U = Kp * ( 60 - 50 ),假设Kp取值为1,此时得到U执行器的输出值是10,结果当你执行器输出后,发现汽车一下变成了35Km/h,此时U2 = Kp * (35 - 50),此时得到U执行器的输出值是-15,结果当你执行器输出后,发现汽车变成了55Km/h,由于惯性和不可预知的误差因素,你的汽车始终无法达到恒定的50km/h。乘上微分系数D,大家叫做KD,则当执行器第1次调节后有了第1次的误差,第2次调节后有了第2次的误差,则结合P系数。积分,实际上是对误差的积分,也就是误差的无限和。

2024-08-18 16:20:21 238

原创 嵌入式开发应该具备的思维方式

他们理论知识雄厚,但缺乏电路等相关的知识,在嵌入式里学习需要再学习一些具体的知识,比较难走。造成代码深层次的问题。虽然没有做过产业调查,但从我所见和所招聘人员,从事嵌入式行业的工程师,要么缺乏理论知识,要么缺乏实践经验。但是这个还是不能很好移植的一个代码,因为编译器一优化,就有可能造成这两个延时循环的丢失。这样,让CPU有时间去执行中断的代码,从而避免了频繁关闭中断造成的中断代码执行不及时,产生的信息丢失。在中国,嵌入式编程的朋友很少是正儿八经从计算机专业毕业的,都是从自动控制啊,电子相关的专业毕业的。

2024-08-15 23:27:43 199

原创 嵌入式软件工程师如何做到独当一面分享

需求转换的核心就两个字“沟通”,开发成本最大的浪费是需求浪费,这分为两方面,一方面需求方,无效需求或者需求变动带来的研发成本浪费,另一方面是需求方和研发方需求传递不一致的浪费,简单来说就是没有充分沟通,导致研发所做的功能和需要方需要的功能不一致,导致返工的现象。一般来说,对我个人而言软件设计,思考最优实现方式要占用30%的时间,撸码占用50%,测试和完善20%,当然,这个不能一概而论,对于新书来说思考的时间短点,关键点在留够测试和完善的时间,测试和完善的时间越长,项目的成功几率就越大;

2024-08-15 23:19:49 55

原创 嵌入式Qt5编译qmqtt库使用MQTT协议连接华为云IOT

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。模型简单来说: 就是存放设备上传到云平台的数据。先点击自定义模型。再创建一个服务ID。接着点击新增属性。这里就创建一个温度的属性。我们这个设备用来测温的。cppIP地址:117.78.5.125端口号:1883订阅主题:$oc/devices/65697df3585c81787ad4da82_stm32/sys/messages/down。

2024-08-15 23:09:28 59

原创 嵌入式中C中常见的语法结构与实现

要区分。

2024-08-10 14:56:37 132

原创 嵌入式硬件操作接口实现分享

以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。使用过Linux的童鞋们肯定知道linux系统无法直接操作硬件层,打开linux或者rt_thread代码会发现代码中都会有device的源文件,没错,这就是驱动层。这样就可以实现软硬件分层了,是不是非常好用!

2024-08-10 14:49:27 186

原创 嵌入式中两种C语言的区别是有那些?

对于嵌入式软件工程师来说,C 语言可以说是最最最主要的编程语言,然而,Linux GNU C 和 ANSI C 这两者之间,却存在着一定的差异,一旦使用不当,很容易造成语法错误。Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。GNU C对标准C进行一系列扩展,以增强标准C的功能。

2024-08-10 14:41:30 84

原创 嵌入式c语言中状态机的三种实现方法

现在的动作封装函数 func 是要返回类型为 INT8U 的返回值的,这个返回值就是状态机要转向的状态, 也就是说, 压缩表格驱动法中的状态机节点不负责状态机新状态的确定, 而把这项任务交给了动作封装函数 func, func 返回哪个状态, 状态机就转向哪个状态。再看看上面的 func 函数,会发现函数有一个形参 pEvnt,这是一个类型为 void * 的指针, 在程序实际运行时指向一个能存储事件的变量,通过这个指针我们就能获知关于事件的全部信息,这个形参是很有必要的。

2024-08-10 14:33:15 97

原创 嵌入式linux系统中USART应用实现

各位开发者大家好,今天主要给大家分享一下,如何在linux系统中使用UART串口的功能。

2024-08-07 21:50:44 60

原创 嵌入式Linux系统中pinictrl框架基本实现

记住pinctrl的三大作用,有助于理解所涉及的数据结构:* 引脚枚举与命名(Enumerating and naming)* 单个引脚* 各组引脚* 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能* 引脚配置(Configuration):比如上拉、下拉、open drain、驱动强度等。

2024-08-04 08:42:56 281

原创 嵌入式单片机中在线调试工具使用方法

SystemView是SEGGER公司开发的嵌入式系统可视化分析工具,提供了对应用程序的完整洞察,包括时间轴、CPU负载、运行时间信息、上下文运行时信息等可视化窗口,能够帮助开发者获得对应用运行时行为的深入理解。RT-Thread官方开发环境RT-Thread Studio里已经内嵌RA6M4 BSP,工程师可以非常方便开发基于RT-Thread RTOS的应用。借助SystemView这样的可视化分析工具,可以帮助开发者更好的了解瑞萨RA6M4上运行RTOS应用的实时行为,进而创造更高质量的代码。

2024-08-02 23:08:59 218

原创 嵌入式Linux系统中LCD屏驱动框架基本实现

2.myfb_ops:这个结构体初始化了帧缓冲的操作,使用了标准的帧缓冲函数(cfb_fillrect、cfb_copyarea、cfb_imageblit)。5.myfb_info->var:设置了分辨率(xres和yres)、颜色深度(bits_per_pixel)和颜色信息(red、green、blue)。6.myfb_info->fix:设置了帧缓冲内存大小(smem_len)、物理地址(smem_start)、类型(type)和视觉模式(visual)。/* 帧缓冲的物理地址 */

2024-08-02 22:47:47 199

原创 嵌入式linux驱动中LCD屏基本介绍

现实生活中,有各种各样的LCD屏,今天主要给大家分享一下,如何使用linux系统中的LCD屏驱动框架,来控制对应的LCD屏幕。

2024-07-31 21:17:22 52

106-多功能电子医药盒设计

详细的功能实现

2023-06-27

图书馆管理系统-java实现

利用java实现图书管理的功能

2023-06-25

利用Matlab自动生成代码方法

1、优控VCU使用注意事项补充说明 2、文档资料

2023-06-25

32.2015四轴飞行器.zip

32.2015四轴飞行器

2023-06-23

31.2007年赛题跷跷板.zip

31.2007年赛题跷跷板

2023-06-23

30.2009年声音引导系统.zip

30.2009年声音引导系统

2023-06-23

29.2013年简易旋转倒立摆.zip

29.2013年简易旋转倒立摆

2023-06-23

26.stm32+瑞萨四轴.zip

26.stm32+瑞萨四轴

2023-06-23

28.stm32仪器仪表.zip

28.stm32仪器仪表

2023-06-23

25.msp430小车红外遥控.zip

25.msp430小车红外遥控

2023-06-23

23.频谱分析80Mhz~100Mhz频谱分析仪(一等奖).zip

23.频谱分析80Mhz~100Mhz频谱分析仪(一等奖)

2023-06-23

22.风摆.zip

22.风摆

2023-06-23

16.光伏并网发电模拟装置.zip

16.光伏并网发电模拟装置

2023-06-23

18.简易数字频率计设计_一等奖.zip

18.简易数字频率计设计_一等奖

2023-06-23

15.基于STM32 四轴飞行器控制系统.zip

15.基于STM32 四轴飞行器控制系统

2023-06-23

10.基于stm32的平衡小车.zip

10.基于stm32的平衡小车

2023-06-23

11.基于51单片机的智能小车.rar

11.基于51单片机的智能小车

2023-06-23

9.简易风洞及控制系统(主控板+供电驱动).zip

9.简易风洞及控制系统(主控板+供电驱动)

2023-06-23

7.开源基于STC15W4K61S4的微型四旋翼.zip

7.开源基于STC15W4K61S4的微型四旋翼

2023-06-23

8.直流风机风力摆控制系统.zip

8.直流风机风力摆控制系统

2023-06-23

c语言教工工资管理系统.zip

c语言教工工资管理系统

2024-04-04

c语言华容道源码.zip

c语言华容道源码

2024-04-04

c语言盒子接球游戏源码.zip

c语言盒子接球游戏源码

2024-04-04

c语言黑白棋ai游戏源码.zip

c语言黑白棋ai游戏源码

2024-04-04

c语言地空对战游戏.zip

c语言地空对战游戏

2024-04-04

c语言打字母游戏源码.zip

c语言打字母游戏源码

2024-04-04

c语言对自己电脑系统测试.zip

c语言对自己电脑系统测试

2024-04-04

C语言标准化PPT课件.rar

C语言标准化PPT课件

2024-04-04

电机+嵌入式详细解说+各个电机分析与说明,包括常见的直流电机、异步电机、同步电机等

电机是一种将电能转化为机械能的设备,广泛应用于各个领域,如工业、交通、家电等。它是现代社会不可或缺的重要装置之一。

2024-04-04

C语言实现俄罗斯方块游戏

1、完整的代码实现 2、详细的操作步骤

2024-04-04

C语言项目练习.zip

C语言项目练习

2023-06-30

19.小车循迹.rar

19.小车循迹

2023-06-30

16.小车测试程序.zip

16.小车测试程序

2023-06-30

11、电源资料.zip

11、电源资料

2023-06-29

04、电子测量.zip

04、电子测量

2023-06-29

03、放大器.zip

03、放大器

2023-06-29

01、信号电路.zip

01、信号电路

2023-06-29

02、检波滤波.zip

02、检波滤波

2023-06-29

人工智能鸿蒙系统中hap文件生成与安装方法

1、基于鸿蒙系统的人工智能的控制与实现

2023-06-27

出租车计价器设计资料课程设计与实现

电子设计大赛

2023-06-27

空空如也

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

TA关注的人

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