- 博客(82)
- 收藏
- 关注
原创 中国在生成式人工智能专利方面处于领先地位
GenAI专利申请量前10名的厂商分别为:腾讯(2074项发明)、平安保险(1564项发明)、百度(1234项发明)、中国科学院(607项)、IBM(601项)、阿里巴巴集团(571项)、三星电子(468项)、Alphabet(443项)、字节跳动(418项)、微软(377项)。“这是一个蓬勃发展的领域,是一个发展速度越来越快的领域。发明人数量排名前五的国家为中国(38,210 项发明)、美国(6,276 项发明)、韩国(4,155 项发明)、日本(3,409 项)和印度(1,350 项)。
2024-07-10 16:07:09 580
原创 Raspberry Pi 使用 Halio 实现 13Top/s AI 加速
Raspberry Pi 5 现在可以选择用于神经网络、人工智能和机器学习的 AI 协处理器。
2024-07-10 11:52:40 527
原创 C++ 是否变得比 C 更流行了?
C++ 首次超越 C,成为最受欢迎的编程语言。这一趋势会持续下去吗?只有时间才能告诉我们答案。不过,我认为重要的是要认识到语言的流行程度并不能说明全部情况。
2024-07-09 22:28:23 1099
原创 linxu驱动入门基础课一(GPIO控制LED灯)基于RK3568
虽然GPIO控制LED 是最简单的linux驱动,但是是初学者入门必须跨过的门槛,里面很多基础知识点,有GPIO的控制原理,字符设备驱动,设备树,gpio和pinctrl子系统,内核模块原理等等,这些知识点非常重要,都是linux驱动入门的基础。下面我们就可以一步步来写一个GPIO控制LED的驱动。
2024-07-08 18:29:39 433
原创 linux内核驱动第一课(基于RK3568)
Linux内核驱动是一种用于管理和控制硬件设备的软件模块。它们是Linux操作系统与硬件设备之间的桥梁,使操作系统能够识别和与各种硬件设备进行交互。设备初始化:设置硬件设备并使其准备好使用。设备控制:通过系统调用和IOCTL命令来控制设备的操作。数据传输:管理数据的读写操作,使用户空间应用程序能够与硬件设备通信。中断处理:处理硬件设备生成的中断请求,以响应设备的事件。资源管理:管理硬件设备所需的系统资源,如内存和I/O端口。内核驱动程序通常分为字符设备驱动块设备驱动和网络设备驱动。
2024-07-02 19:45:12 1055
原创 RK35x8通过TFTP下载内核到开发板
对于有网线接口的RK35X8开发板,调试时候,可以通过网线下载内核镜像和设备树到开发板,不用每次修改驱动都要重新打开下载工具,进入下载模式。通过TFTP可以大大提高调试效率。
2024-06-28 17:24:42 437
原创 RK3588芯片介绍
RK3588是一款低功耗、高性能处理器,适用于基于ARM的PC和边缘计算设备、个人移动互联网设备和其他数字多媒体应用,集成四核Cortex-A76和四核Cortex-A55,并分别带有NEON协处理器。支持8K视频编解码器。
2024-06-27 14:57:42 6007
原创 STM32中SPI的使用
在STM32标准外设库中,结构体用于配置SPI模块的初始化参数。这些参数设置涵盖了SPI通信方式的多个关键方面,包括数据方向、主从模式、数据大小、时钟极性和相位、NSS信号管理方式、波特率预分频、数据传输顺序和CRC校验多项式。以下是: 设置SPI数据通信方向。:全双工,同时使用MISO和MOSI线进行数据接收和发送。:仅接收模式,使用MISO线接收数据,常用于节约引脚。:单线接收模式。:单线发送模式。SPI_Mode: 指定SPI的工作模式。:主设备模式。:从设备模式。
2024-05-20 17:05:29 1213
原创 STM32中usart使用DMA接受数据
在STM32微控制器中,USART(通用同步异步接收发射器)配合DMA(直接存储器访问)用于接收数据,可以大幅提升数据处理的效率,尤其是在接收大量数据时。通过利用DMA,CPU可以从数据传输过程中解放出来,专注于其他任务。
2024-05-09 21:58:46 1704
原创 STM32中的Systick的使用
SysTick,全称System Tick Timer,是Cortex-M microcontrollers内核中提供的一个简单而有效的系统定时器,设计用来给操作系统提供时间基准,或用于生成周期性的中断。STM32系列微控制器,作为基于ARM Cortex-M内核的设备,也内置了这一功能模块。
2024-05-08 22:22:04 2295 1
原创 ILI9341显示驱动芯片的使用
ILI9341是一种常见的TFT LCD显示驱动芯片,它在众多的应用中都有广泛的使用。这种芯片的一个显著特点是它支持16位RGB565颜色,这意味着它可以显示多达65536种不同的颜色。这使得ILI9341能够提供鲜艳、生动的色彩效果,对于需要表现丰富色彩的应用来说是极好的选择。此外,ILI9341还支持最高240x320像素的分辨率,这使得它能够显示清晰、细腻的图像。无论是用于显示文本,还是用于显示图片或者视频,ILI9341都能提供优秀的显示效果。
2024-05-07 22:34:31 1810
原创 用软件分层思想编写ESP8266的驱动
编写ESP8266和STM32的AT指令通信代码是一项复杂的任务,但是通过使用软件分层技术,我们可以更好地管理这个过程并提高代码质量。软件分层技术是一种编程方法,它将软件系统分解为多个独立的层,每个层都有特定的职责。这种结构可以帮助我们更好地组织代码,使其更易于理解和维护。下面我们详细讨论如何在编写ESP8266和STM32的AT指令通信代码时应用这种方法。首先,我们需要将程序分为三个主要层次:硬件层,协议层和应用层。
2024-05-06 10:22:21 582 1
原创 嵌入式的工程师的分类
如果把后面第二类做LINUX系统的工程师细分也可以分为三类,其一是做用户界面的工程师,这类工程师主要是复杂UI的实现,业务逻辑比较复杂,代码工作量比较大。软件工程师也是可以分为二类,一类是做裸机的低端单片机(如STM32)的工程师,这类工程师设计的系统比较简单,通常一个工程师就可以搞定一个项目。第二类是做带LINUX系统的SOC比较高级的芯片的工程师,这类芯片比较复杂,比如手机,车机很多系统都是用此类芯片,开发这类复杂芯片需要几十人的团队。嵌入式分为软件和硬件。今天和大家聊聊嵌入式的工程师的分类。
2024-05-05 18:36:43 366
原创 深入解析I2C协议:通讯简化之道
在现代电子系统中,组件间的通信是必不可少的。而I2C协议(Inter-Integrated Circuit),由Philips Semiconductor(现为NXP Semiconductors)在1980s初期发明,已成为一种广泛使用的串行通信协议。其设计目的是允许一个芯片能够与其他芯片通过简单的双线总线进行通信,这样不仅能够简化了物理布线,还能提高系统的扩展性。本文将深入介绍I2C协议的工作原理、特点以及应用场景。
2024-05-04 22:25:32 961
原创 Arduino 推出带 Wi-Fi的 32 位 UNO 板
UNO R4 WiFi 拥有可通过 Qwiic I2C 连接器连接的各种兼容模块,再加上市场上已有的大型 UNO 扩展板生态系统,提供即插即用体验,无需焊接即可创建项目、面包板或手动接线。新型 UNO R4 板有两个版本,带 Wi-Fi 连接和不带 Wi-Fi 连接,并保持了 UNO R3 的外形尺寸、屏蔽兼容性和 5V 电源。保持 UNO R3 的引脚排列、电压和外形尺寸不变,可确保与现有屏蔽和项目实现最大的硬件和电气兼容性,同时使 UNO R4 板成为高性能的直接替代品。
2024-05-03 22:08:35 789
原创 嵌入式系统初学者指南
随着 5G 的出现、电动汽车需求的增长以及“智能”设备的兴起,全球嵌入式系统行业的估值将从目前的865 亿美元增长到 1162 亿美元。它与传统软件有点不同,因为您编写的代码需要满足嵌入式系统的各种约束。大多数嵌入式软件工程师都使用 C 语言进行编程,因为它在内存和时间方面的开销较低,但 C++ 甚至 Python (microPython) 等语言在嵌入式世界中越来越受欢迎。嵌入式系统是一种独立的、基于微处理器的计算机系统。里面有完整的知识体系构建路径,还有重要的学习资源包括图书和视频。
2024-04-06 19:34:04 546
原创 如何在C语言中使用指针算术来操作数组和字符串?
在C语言中,指针和数组紧密相关,使用指针算术来操作数组和字符串是一种常见且有效的手段。指针算术基于几个关键原则:指针加一(ptr + 1)将指向下一个数据元素,而不是下一个字节,这取决于指针所指向的数据类型的大小。
2024-04-02 19:49:53 607
原创 什么是人工智能物联网(AIoT)?
人工智能和物联网 (AIoT) 的结合创建了“智能”设备,可以从生成的数据中学习并利用这些见解做出自主决策。人工智能和预测分析有助于收集和分析大量数据,并使用这些信息帮助零售商预测并做出准确的、数据驱动的业务决策。从近年来的各种市场报告来看,都表明物联网终端设备和公司越来越多地采用人工智能技术,从基于云的人工智能转向边缘人工智能,以减少延迟和成本并实现实时监控。预计推动该市场的主要因素是需要高效处理正在生成的大量实时数据从物联网设备获得宝贵的见解、实时监控、增强的用户体验并减少维护成本和停机时间。
2024-04-01 22:03:26 2405
原创 受益于边缘计算的三个关键应用
尽管边缘计算并不是一个新概念,但由于处理能力的提高和这些边缘设备中所包含电子设备的外形尺寸的缩小,边缘计算在嵌入式边缘设备中的应用已经成为可能。除了处理能力的提高之外,传感器和外围设备的发展还增强了可穿戴设备的功能,包括复杂的图形、定位、语音控制和运动传感。可穿戴设备的边缘计算功能还确保快速、安全地处理所生成的大量数据,减少对宽带处理的需求,降低功耗,从而延长电池寿命。SoG 还协调车辆范围内的软件、固件和机器学习模型的无线 (OTA) 更新,不断提高车辆的使用寿命,同时支持车辆 OEM 的增量创收服务。
2024-03-31 14:34:08 1286
原创 了解和使用无操作系统和平台驱动程序
顾名思义,无操作系统驱动程序设计用于通用(或非特定)操作系统。该名称还意味着这些驱动程序可以在没有任何操作系统支持的 BareMetal 系统上使用。无操作系统驱动程序旨在为给定精度转换器的数字接口访问提供高级 API。使用这些 API 的无操作系统驱动程序与设备连接以访问、配置、读取和写入数据,而无需了解寄存器地址(内存映射)及其内容。无操作系统驱动程序利用平台驱动程序层,允许在多个硬件/软件平台上重复使用相同的无操作系统驱动程序,从而使您的固件具有高度可移植性。
2024-03-25 22:20:18 1123
原创 四个重要的IOT物联网协议介绍
物联网 (IoT) 有多种应用程序级协议可供使用,使应用程序开发和维护变得更加容易。然而,考虑到某些应用程序协议的范围、可用性、成熟度和细分市场适用性,某些应用程序协议比其他协议更合适。
2024-03-24 21:52:10 1941
原创 能降低嵌入式系统功耗的三个技术
我们在这篇文章中看到了你可以使用的几种技术,以帮助提高你的设备的电池寿命或减少你的有源设备的能耗。我们经常忘记,在大多数情况下,你得到的是你付出的。其中一种情况是对于低功耗的,以电池为动力的设备。你可以无限优化能源,但通常在优化过程中会有一个“膝点”,在这个点之后,电池寿命的提高会变得更少。大多数与缓存的主要功能有关:提供对频繁使用的数据或指令的更快访问,从而减少CPU访问较慢的主内存的时间。使用商业编译器可能是你可以利用的一种方式,不仅可以从你的代码中得到更好的性能,而且还可以节省电池寿命。
2024-03-23 18:28:12 843
原创 C语言预编译#pragma宏的作用
在嵌入式编程中,#pragma 指令具有非常重要的作用,因为它允许开发者在不同的编译器之间传达特定的编译指令。由于嵌入式编程通常与硬件紧密相关,且资源有限,这些指令可以帮助开发者更有效地利用可用资源,优化程序,以及处理特定的硬件约束。
2024-03-22 22:27:30 634
原创 选择培训机构前,你需要了解的培训机构内幕
很多培训机构是从学员中吸收讲师,这样的讲师成本低,而且了解学员的心理,上课可能会和比较受学员欢迎,但是缺乏工作经验,讲授比较浅显,有时会带偏学习方向。培训班能帮你提升技能,但公司招人的时候一般会看相关项目经验的长短,同时也会看学历学校,所以培训班学生成功找到工作,培训班经历固然是一方面,但同时一个班出来,学历高之前又有相关经验的同学一定好找工作,而且工资也高。教材的编写方面要看,内容的广度和深度,是否把含了主流技术点,项目中是否有这些技术点的深入应用,而不是仅仅就用一个例子就来说明这个技术点。
2024-03-19 16:13:33 1117
原创 STM32中freertos任务不能调度的原因解决
本文是freertos项目中的定位问题,如果定位到同样问题(任务不能调度),可以按下面方法解决。
2024-03-18 11:51:30 1416
原创 C语言的宏和预处理器
预处理器在实际编译发生之前扮演着重要的角色,它处理各种预处理指令,这些指令包括宏定义(#define)、文件包含(#include)、条件编译(#ifdef、#ifndef、#if、#else、#elif、#endif),以及编译错误(#error)和行控制(#line)。在上述示例中,如果定义了DEBUG,那么Log宏将被替换为一个输出调试信息的printf调用;如果未定义DEBUG,则为一个空操作,这样可以轻松控制调试信息的输出。
2024-03-17 17:26:59 1236
原创 C语言的位操作与位字段
C语言中的位操作允许程序员直接在整型变量的单个位或位组上进行操作。这种操作在许多低级编程任务中非常有用,尤其是在嵌入式系统编程中,如硬件操作、设备驱动及性能优化等场景。位操作主要使用以下几种位操作符
2024-03-16 21:50:53 998
原创 C语言中volatile关键字的用法
在C语言中,volatile是一个类型修饰符。它告诉编译器,被修饰的变量可能会在程序的控制或知识之外被改变。使用volatile告诉编译器不应优化掉这些变量的读写,因为它们可能会突然改变,而这种改变是编译器无法预测的。这确保了每次访问volatile变量都会直接从它的实际内存地址读取,而不是从可能已经不同步的寄存器或其他缓存中读取。使用volatile的正确性和需要它的场合通常涉及到硬件和并发编程。下面进一步介绍几个volatile。
2024-03-15 17:30:49 618
原创 FreeRTOS入门基础
RTOS是为了更好地在嵌入式系统上实现多任务处理和时间敏感任务而设计的系统。它能确保任务在指定或预期的时间内得到处理。FreeRTOS是一款免费开源的RTOS,它广泛用于需要小型、预测性强、灵活系统的嵌入式设备。
2024-03-14 17:44:49 1666
原创 七个项目掌握freertos
最基本的示例项目,涉及到创建一个简单的任务,用于控制LED的闪烁。这个项目会教你如何初始化FreeRTOS并创建任务。
2024-03-12 22:47:30 6287 1
原创 不怕没项目做!github上的STM32 优秀开源项目和初学者项目
Go语言编译器,适用于微控制器、WebAssembly、命令行工具,基于LLVM。语言:Go星标数:14,267+描述:TinyGo带来了Go语言在嵌入式系统的实现,使得STM32等微控制器编程更加多样化。- Flipper Zero的固件源码。语言:C星标数:10,699+描述:为Flipper Zero多功能设备提供固件支持,包含了许多和STM32相关的驱动和协议实现。- 嵌入式编程的精选列表。语言:多种星标数:4,834+
2024-03-11 21:58:49 8684 1
原创 理解STM32的低功耗模式
STM32的低功耗模式是特别设计来减少微控制器在不活跃状态下的能耗。这些模式允许STM32在保持核心功能的同时尽可能减少电力消耗,适合用在电池供电或需长期运行的场景。:在微控制器非活跃阶段关闭CPU和不必要外围设备的时钟信号,减少硬件运行所消耗的能量。:通过降低微控制器的工作频率,减少能量消耗。停止不必要的外围设备:如果外围设备(如ADC,通讯接口)暂时不需要,将它们关闭或设置成低能耗状态。
2024-03-10 19:54:10 1825
原创 经典的算法面试题(2)
给定一个字符串,判断它是否是一个回文字符串。回文字符串是指正序和倒序读都一样的字符串。示例:输入:"level"输出:true输入:"algorithm"输出:false。
2024-03-07 17:56:12 494
原创 STM32的RCC原理(复位和时钟控制)
STM32微控制器的RCC(Reset and Clock Control)模块是一个非常重要的部分,它负责管理微控制器的时钟系统和复位系统。以下是一些基本的原理和概念:时钟源:STM32微控制器的时钟系统有多个时钟源,包括内部的HSI(High Speed Internal)时钟,外部的HSE(High Speed External)时钟,以及PLL(Phase-Locked Loop)时钟。这些时钟源可以根据需要进行选择和配置。
2024-03-06 12:55:35 1646
原创 嵌入式入门必经之路:C语言学习计划
不断学习和探索:C语言是一个非常广泛的编程语言,有很多特性和技巧可以学习。保持学习的态度,阅读相关的书籍、博客和文档,不断探索新的编程概念和技术。阅读和理解代码:找一些开源的C语言项目或者代码库,阅读其中的代码并尝试理解其实现原理。使用版本控制:使用版本控制工具,如Git,来管理你的代码。从简单开始:如果你是初学者,建议从简单的程序开始,如打印一条简单的消息或计算两个数字的和。参与开源项目:如果你感兴趣,可以考虑参与一些开源项目,这样可以与其他开发者合作,学习他们的经验,并为开源社区做出贡献。
2024-03-04 15:45:06 985
原创 STM32 DMA入门指导
DMA,全称直接存储器访问(Direct Memory Access),是一种允许硬件子系统直接读写系统内存的技术,无需中央处理单元(CPU)的介入。下面是DMA的工作原理概述:数据传输触发:DMA传输可以由CPU指令触发,也可以由硬件事件(如一个外设准备好数据)自动触发。外设和内存之间的数据交换:一旦DMA传输开始,DMA控制器会将数据从源地址直接传送到目的地址。源地址常常是外设的数据寄存器,目的地址通常是内存中的一个缓冲区;反之亦然。
2024-03-02 21:58:21 1281
原创 STM32 的ADC使用指南
ADC,即模数转换器(Analog-to-Digital Converter),是一种在微控制器(如STM32)中常见的设备,它能够将模拟信号转换为数字信号。简单来说,我们的现实世界中大部分的信号都是模拟的,比如声音、光线强度、温度等,它们的变化是连续的。而微控制器是数字设备,它处理的是0和1的数字信号。ADC让我们可以读取模拟信号的值,然后将这个连续变化的信号转换成一系列数字,微控制器就可以读取这些数字进行进一步的处理了。
2024-02-29 14:36:00 1837
DHT11温湿度传感器驱动程序
2024-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人