c/c++
文章平均质量分 83
an520_
这个作者很懒,什么都没留下…
展开
-
总结嵌入式C语言难点(2部分)
C语言提供了丰富的预处理机制,方便了跨平台的代码的实现,此外C语言通过宏机制实现的数据和代码块替换,字符串格式化,代码段切换,对于工程应用具有重要意义,下面按照功能需求,描述在C语言运用中的常用预处理机制。嵌入式C语言在处理硬件物理地址,位操作,内存访问,都给予开发者了充分的自由,通过数组,指针以及强制转换的技巧,可以有效减少数据处理中的复制过程,这对于底层是必要的,也方便了整个架构的开发。#error,#warning用于用户自定义的告警信息,配合#if,#ifdef使用,可以限制错误的预定义配置。...原创 2022-08-02 16:09:52 · 924 阅读 · 0 评论 -
总结嵌入式C语言难点 (1部分) 【结尾有资料】
指针占有的空间与芯片的寻址宽度有关,32位平台为4字节,64位为8字节,而指针的加减运算中的长度又与它的类型相关,如char类型为1,int类型为4,如果你仔细观察上面的代码就会发现par的值增加了8,这是因为指向指针的指针,对应的变量是指针,也就是长度就是指针类型的长度,在64位平台下为8,如果在32位平台则为4,这些知识理解起来并不困难,但是这些特性在工程运用中稍有不慎,就会埋下不易察觉的问题。从堆上分配,亦称动态内存分配。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。...原创 2022-08-02 15:01:23 · 319 阅读 · 0 评论 -
C语言中指针没那么难~(2)【文章结尾有资料】
对于函数func来说,函数的名称就是函数代码区的常量,对它取地址(&func)可以得到函数代码区的地址,同时,func本身也可以视为函数代码区的地址。主函数中,把一个数组的首地址与数组长度作为实参传入指针函数pfun里,把指针函数的返回值(即指向数组的指针)赋给整形指针p。字符串指针指向的字符串中的字符是不能改变的,而字符数组中的字符是可以改变的。字符串指针指向的字符串中的字符是不能改变的,而字符数组中的字符是可以改变的。,则数组名是一个常量指针,该指针的值是不能修改的,即类似。.........转载 2022-07-30 15:15:00 · 308 阅读 · 0 评论 -
C语言中指针没那么难~ (1)【文章结尾有资料】
指针在C语言中是一块很重要的内容,也是比较难理解的一块内容,我们需要反复学习反复巩固才可以对其有所了解。之前也分享过指针相关的笔记,但是都比较杂,本篇笔记汇总一下指针相关的内容,包含了挺多指针相关的基础知识点。......转载 2022-07-30 15:00:00 · 127 阅读 · 0 评论 -
C语言入门【详细】
由于18的二进制数是10010,我们将一个int类型变量赋值18,本质上是将这个变量的内存地址对应的32个bit位修改为00000000000000000000000000010010(未满31位,后面的数字用0填充为什么是31而不是32呢,后面会介绍)。读者请注意,标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。4为二进制值11后面一个数,由于11的个位数1+1满2,需要进1位,而二进制值11的位数1+1又满2,所以位数加1,最终转换结果为100。...转载 2022-07-28 11:00:00 · 2073 阅读 · 0 评论 -
基于华为云 IOT 设计智能称重系统 (STM32)【二】结尾有资料
简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。设备属性就是设备上传的传感器状态数据信息,应用侧提供了API接口,可以主动向设备端下发请求指令;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的API接口、SDK接口,为了方便通用一点,我这里采用了API接口完成数据交互,上位机软件采用QT开发。在使用接口时,最好先使用华为自己的调试接口测试。...转载 2022-07-26 14:00:00 · 373 阅读 · 2 评论 -
基于华为云 IOT 设计智能称重系统 (STM32)【一】
伴随着网络技术,各种通讯技术,传感器技术的飞速发展,物联网技术成为了当今技术领域发展为迅速的技术。而物联网技术的核心仍然是以互联网技术为基础的,物联网是新一代信息技术的重要组成部分,也是信息化时代的重要发展阶段。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。(1)云端通信模块采用ESP8266-WIFI(2)联网通信模块采用ESP8266(3)GPS模块采用ATGM336H双模GPS模块。...转载 2022-07-26 13:30:00 · 1026 阅读 · 0 评论 -
嵌入式开发小记,实用小知识分享
之前为了方便测试部门保存一些测试数据,需要临时开发一个简单的nanomsgserver,与板子端的client在局域网内进行通信,接收client数据并保存。作为server端,需要绑定电脑的IP,不同的电脑IP是不一样的,所以使用不同的电脑时需要修改IP才能正常使用这个server程序。在不需要重新编译程序的情况下,有如下两种方法可以满足这个需求把IP写在配置文件里,比如ini格式的配置文件里,然后server程序读取配置文件里的IP,再进行绑定。server程序自动获取IP地址并绑定。...原创 2022-07-25 16:00:00 · 1120 阅读 · 0 评论 -
C语言实现发牌功能基本方法
当52张牌全部发放完毕,打印发牌的结果。中的4表示花色种类有四种,13表示每种有13张(13个编号),扑克牌的编号(名字)用字符表示,分别为{'2','3','4','5','6','7','8','9','0','J','Q','K','A'}('0'表示10)(PLAYER_NUMBER是玩家数量,4表示牌的花色种类有4种,13为某种花色的牌最多13张)这题实现起来还是比较简单的,只需定义两个多维的字符数组,第一个用来存放扑克的编号,第二个用来存放4个玩家的手牌。...原创 2022-07-25 11:28:11 · 2643 阅读 · 0 评论 -
C语言中长度为零的数组详解 (2)
因此我们可以很好的将该类型的结构体作为数据报文的头格式,并且最后一个成员变量,也就刚好是数据内容了.由于0长度数组是GNUC的扩展,不被标准库任可,那么一些巧妙编写的诡异代码,其执行结果就是依赖于编译器和优化策略的实现的.操作,而我们在使用的过程中往往在函数中返回了指向缓冲区的指针,我们并不能保证每个人都理解并遵从我们的释放方式。的时候,也就是0长度数组的时候,0长度数组作为数组名,并不占用存储空间。首先要说明的是,支持0长度数组的扩展,重点在数组,也就是不能用。...转载 2022-07-20 13:56:50 · 818 阅读 · 0 评论 -
C语言中长度为零的数组详解 (1)【文章结尾有资料】
长度为0的数组并不占有内存空间,而指针方式需要占用内存空间.对于长度为0数组,在申请内存空间时,采用一次性分配的原则进行;对于包含指针的结构体,在申请空间时需分别进行,释放时也需分别释放.对于长度为0的数组的访问可采用数组方式进行。...转载 2022-07-20 13:43:21 · 559 阅读 · 0 评论 -
单片机红外电路设计原理
电视、空调都离不开红外遥控器。空调遥控器其实就是一个红外信号发射装置,而空调机身具有红外接收探头,可以接收遥控器发出的红外信号并解析,从而实现遥控的功能,电视遥控器也是同样的原理。现在有很多手机具有红外功能,通过匹配通讯协议,就能实现手机遥控电视和空调的作用。下面通过硬件和软件两个方面来和大家分享,红外遥控实现的原理。本部分内容包括,红外发射部分原理、红外接收部分原理以及软件编码部分原理。......原创 2022-07-18 16:30:00 · 783 阅读 · 0 评论 -
早期单片机加密的一些方法 【评论区领取资料】
有些智能卡甚至能够做到每张卡片总线加密密钥不同,这样即使入侵者完全破解了,也无法生产出相同功能的芯片来,因为每个智能卡芯片有唯一的ID号,无法买到相同ID号的智能卡。普通的MCU不会使用这种保护方法,因为设计较难,且在异常运行条件下也会触发,如高强度电磁场噪声,低温或高温,异常的时钟信号或供电不良。部分可编程的智能卡走的更远,干脆砍掉了标准的编程接口,甚至干掉了读取EEPROM接口,取而代之的是启动模块,可以在代码装入后擦掉或者屏蔽自己,之后只能响应使用者的嵌入软件所支持的功能。............原创 2022-07-17 09:30:00 · 145 阅读 · 0 评论 -
【物联网】WiFi基础知识 (一)【看评论区领取资料】
wifi的802.11协议中比较常见的知识做一个基本的总结和整理一、基本概述============================1、有线和无线网络目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会完全取代以太网,但是它正拥有越来越多的用户,无线网络中最有前景的是Wifi。本文介绍无线网络相关内容。无线网络相比有线网络,还是有许多的缺点的:(*)通信双方因为是通过无线进行通信,所以通信之前需要建立连接;而有线网络就直接用线缆连接,不用这个过程了。(原创 2022-07-15 12:00:00 · 443 阅读 · 1 评论 -
STM32CubeIDE:Hal库配置GPIO 【结尾有资料】
环境硬件:STM32L0xxx软件:安装STM32CubeMx,STM32CubeIDE(MDK也行),STM32CubeProgrammer(STMFlashLoader或者其他烧录软件)安装STM32Cube FW L0_V1.11.0库创建STM32项目1. 打开STM32CubeIDE,设置工作目录2. 创建STM32项目 3. 以STM32L011G4为准 这里可以简单了解到选择MCU资源。 【学习技术群611386401】 4. 设置项目名称 5. 安装L0的库(如果安装,这步会原创 2022-07-14 15:00:00 · 369 阅读 · 0 评论 -
stm32零基础应该怎么入门?
单片机(microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。STM32是一种功能比较强大的32位的单片机,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不仅编程方便,而且更容易移植。如今 STM32 的出现就是一种趋势,一种潮流,我们要 做的就是搭上这趟快车,让自己的技术更有竞争力。一、STM32是什么?1.ST— 意法半导原创 2022-07-14 07:00:00 · 4554 阅读 · 0 评论 -
闪存中的键值对:无文件系统 minINI
许多嵌入式系统应用需要以持久的方式存储某种数据:校准值、设置或日志信息。对于较少的数据量,使用外部存储器或文件系统是一种过度大材小用。在许多系统中,我使用minINI以“ini-file”的方式存储键值解析,但它需要使用某种文件系统。minINI很棒,效率很高,使获取和存储数据变得非常容易。但对于简单的情况,单个闪存页面或扇区正是我所需要的。相反,直接管理该页面,为什么不在没有文件系统的情况下使用minINI? 例如,我使用上面的电路板驱动多达4个不同的步进电机和霍尔传感器。我需要存储校准偏移量和电机信息转载 2022-07-14 02:00:00 · 160 阅读 · 0 评论 -
基于STM32MP157的tf-a移植 【详解】
移植好st的tf-a文件后,修改自己板子对应的设备树,注意备份设备树在tf-a/tf-a-stm32mp-2.2.r1/fdts中stm32mp157d-szm.dts: stm32mp157d-szm.dtsi:删除vin和PMIC节点 编译serialboot修改我们构建的系统烧写目录中,用到了正点原子出厂镜像中的stm32mp157datk-serialboot.stm32,前面讲了,STM32CubeProgrammer 首先通过 USB 或串口向开发板下载stm32mp157d-atk-se转载 2022-07-14 13:00:00 · 455 阅读 · 0 评论 -
嵌入式开发者明显在涨薪
去年到今年,明显能感觉到嵌入式开发岗位在涨薪。身边认识的一些同学和我说的工资水平上涨到20k+,30k+。工作几年跳槽的同学30-40k的明显多了。认识的一些朋友也向我报喜终于突破瓶颈到年薪50万左右了。还有朋友请帮忙发招聘资深嵌入式工程师年薪100万+的(前两三个月,就在这个公众号发的)。整个行业明显比前些年薪资水平上涨了。为什么?有些同学说是因为通货膨胀,印钱多了房价涨了物价涨了所以工资水平跟着上涨。这种想法too young too simple啊!你以为房价涨工资就会跟着涨让你买得起?这个逻辑完全是转载 2022-07-13 05:30:00 · 141 阅读 · 0 评论 -
用VScode作为stm32开发平台(platformIO)
VScode真是个宝,啥都能写,啥平台都能用。本篇教你如何使用VScode配合cubeMX实现一键下载。正点原子stm32F103RC开发版(只看芯片型号就行),ST-link调试器。我的os是Win10,理论上Mac和Linux桌面版都可以运行。首先,安装Vscode和cubeMX,本篇默认以上软件已经安装好。a. 安装platformIO插件在VScode中,在插件市场搜索。首次安装时间较长,因为它要安装核心组件,可以理解为它的后端. 去买杯饮料,或者吃个鸡, 回来差不多就好了.b. 新建platfor原创 2022-07-13 13:30:00 · 2265 阅读 · 0 评论 -
关于STM32单片机采用CH340串口烧写程序的细节
针对STM32系列单片机,大家一般采用STLink和Jlink来下载程序,这里我们试一下CH340 USB转串口芯片的下载方法,主要是将Boot电平设置好。采用:STM32F103C6T6芯片microUSB 接口连上电脑,com3端口环境:Win10,提前安装好CH340/341系列的驱动针对BOOT0和BOOT1的不同接线方式(高电平,低电平,不接线),开发板的下载情况分析如下图:(“x”代表不接线,“√”代表能成功下载)原创 2022-07-13 11:00:00 · 3425 阅读 · 1 评论 -
STM32结合ESP8266初始准备
使用STM32C8T6最小系统板+ESP8266两者通过串口连接。使用单片机的UART1串口。PA9 - USART1(Tx)PA10 - USART1(Rx)注意:ESP8266必须使用5V供电为了使得STM32接收ESP8266的数据能看到,将接收到的数据通过UART2串口发送打印在电脑上。PA2---USART2_TXPA3---USART2_RX初始化UART1、UART2UART1接收函数通过检测关键字:比如 OK / >/ WIFI CONNECTED 来知道当前ESP是否正常工作;若有异常,则原创 2022-07-11 17:35:37 · 4098 阅读 · 5 评论 -
RTEMS运行在STM32上
主机环境Ubuntu 16.04 AMD64编译RTEMS1,安装编译环境2,建立编译目录 3,下载编译工具4,检查依赖环境 检查结果ok 5,编译安装工具链需要较长时间,耐心等待。6,添加工具链路径到环境变量7,检查工具链版本注销并重新登录电脑,打开终端,输入 8,下载源码9,编译源码 10,制作bin文件模拟器运行RTEMS1,编译STM32模拟器 2,运行模拟器3,运行结果 WX2018091原创 2022-07-12 14:30:00 · 517 阅读 · 0 评论 -
stm32同时使用TIM2、TIM3、TIM4输出PWM控制三个舵机
1. 不理解TIM_OC2Init、TIM_OC2PreloadConfig、SetCompare2中2的含义OC2Init、OC2PreloadConfig、SetCompare2中的2是频道2的意思,即这里设置了TIM_CH2的功能例如这里就设置了TIM_CH3的功能2. TIM2的重映像没有屏蔽JTAG功能功能导致无法正常使用感谢以下两篇文章stm32 TIM2 重映射https://blog.csdn.net/qlexcel/article/details/71780452STM32 TIM原创 2022-07-12 12:00:00 · 2203 阅读 · 0 评论 -
STM32——ST-Link v2调试下载器的连接方法【详解】
在网上购买了STM32F103C8T6的最小系统开发板,由于手头上没有官方的STM32调试器,所以也同时购买了一个便宜的st-link v2下载调试器 这种下载器和STM32的最小系统板之间完成调试通信需要连接四根线,连接图如下所示 其实这里最需要注意的是方向问题,这种插针座都是有一个缺口的,缺口的方向一定要和图中所示的方向一致再接线才是正确的接线方式,如果接线接错了,在程序下载调试的时候是一定会报错的。另外一点是这样四根线连接的调试器是不具备开发板供电功能的,所以说还需要给最小系统板单独的供电电源。在完原创 2022-07-11 20:00:00 · 14566 阅读 · 1 评论 -
Archlinux下 stm32 烧写工具配置
使用的开发板是好几年好几年前买的了,板子一直在家里睡觉。最近闲着没事,所以打算学习一下stm32.板子是普中STM32-PZ6806L开发板。开发板的图见下我们这里使用ISP(In-System Programming)烧入.ISP 烧入使用串口.这个开发板子提供了上图的的位置是一个,的位置是一个usb转串口的芯片。,的原理图见下:其中串口的 引脚控制的重置。引脚控制的boot选择。我们要想烧入程序:要把开发版上面的的位置的跳冒连接到3.3V连接到GND。(PS,我试了试他们都连接到GND也是可以用的转载 2022-07-11 18:30:00 · 451 阅读 · 0 评论 -
嵌入式开发:如何为项目选择合适的RTOS?
为一个项目选择合适的RTOS可能是一件棘手的事情。嵌入式开发人员经常带着预先设定的观点来到谈判桌前,这些观点可能会影响他们的判断,并将他们引向非最佳方向。许多人都参与过工程决策,其中的选择是由最大声、最积极的团队成员决定的。让我们来看看这种决策技巧,以及它如何为工作选择合适的RTOS。 步骤# 1–确定选择标准 为了做出公正的RTOS选择,开发团队需要首先确定可以用来评估RTOS的重要选择标准。选择RTOS时需要考虑的七个关键特征是性能、特性、成本、生态系统、中间件、供应商/销售商和开发团队中的工程师转载 2022-07-11 14:00:00 · 144 阅读 · 0 评论 -
嵌入式开发:构建现代遥测GUI的5个技巧
几乎每个嵌入式系统都需要图形用户界面 (GUI) 来监控和显示遥测数据。在开发过程中监控遥测可以帮助嵌入式开发人员可视化系统正在做什么,并在验证和调试系统中发挥关键作用。在这种情况下,遥测是系统可以传输的任何健康和保健信息,并且可能会或可能不会与最终产品一起部署。今天开发 GUI 正在发生巨大变化。在这篇文章中,我们将探讨一些关于如何使你的 GUI 工具现代化的技巧。 技巧1 – 留下应用程序并使用浏览器 GUI 曾经是用 Visual C++ 甚至 LabView 编写的独立的单体应用程序。虽然这不转载 2022-07-11 12:00:00 · 99 阅读 · 1 评论 -
嵌入式行业知识图谱,有这一份就够了(二)
嵌入式设计应具备的基本技能1、Linux 基础安装Linux操作系统Linux文件系统Linux常用命令Linux启动过程详解熟悉Linux服务能够独立安装Linux操作系统,能够熟练使用Linux系统的基本命令认识Linux系统的常用服务安装Linux操作系统Linux基本命令实践设置Linux环境变量定制Linux的服务Shell编程基础使用vi编辑文件使用Emacs编辑文件使用其他编辑器2、Shell 编程基础Shell简介认识后台程序Bash编程熟悉Linux系统下的编辑环境熟悉Linux下的各种S原创 2022-07-10 16:15:00 · 222 阅读 · 0 评论 -
嵌入式行业知识图谱,有这一份就够了(一)【文章较长,分两部分,结尾有资料】
第一部分:Linux平台搭建与环境熟悉了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。1、Linux 简介;2、Linux 系统的主要特点;3、Linux 的组成;4、主要的 Linux 版本;5、嵌入式 Linux简介与发展第二部分:虚拟机安装和LINUX系统安装1、虚拟机安装;2、Linux系统的安装;3、Linux系统的常用软件的安装;4、Linux快速入门5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell 应用第三部分原创 2022-07-10 16:00:00 · 473 阅读 · 0 评论 -
STM32入门之文件结构
本人在学习STM32过程中,主要使用的是B站洋桃电子的课程(之前使用过正点原子的视频,感觉不适合本人这种小白),因而其中许多代码借鉴(抄)了其课程,故在此说明。可以看到,该文件分为六大部分,不同人对其起名可能有出入,或者文件结构有略微区别。但其关键的几个部分及开发方式是基本相同的。其中STARTUP是STM32的启动代码,用汇编语言编写。我们正常在操作一款单片机的时候,都是从main函数开始进行编程的,但是单片机上电是从main函数开始执行的吗?答案当然是否定的,在main函数之前单片机最先执行的是硬件设原创 2022-07-09 08:45:00 · 789 阅读 · 1 评论 -
cai鸟两天入门STM32开发(二)【结尾有资料,感谢关注】
在使用野火的调试器时,需要在项目选项中进行设置。1. 设置选项选择;项目设置选择示意图 2. 调试器选择; 调试器选择示意图3. 调试器参数设置 调试器参数选择2在点击下载按钮后,如果提示下载成功,那么对应开发板的引脚就可以进行对应的输出。此处参见“GPIO点灯”章节下对应的子原创 2022-07-08 18:30:00 · 93 阅读 · 0 评论 -
cai鸟两天入门STM32开发(一)【文章过长,请看下回分解;结尾有资料】
似乎有一句诗提到类似的情景,忽然有所收获了,就很想与大家一起分享这种收获,让这种豁然开朗的幸福感传递给更多的人。我也是这样的缘由,放假两天,学习了STM32的开发,自我感觉有所得了,希望能够将这种“知之”的快乐感分享给其他想要入门这个方面的朋友。有些人觉得无所谓,反正就是一个标题,但也有些朋友会认为这是我的一种自我炫耀,说两天就能学会,多牛,为了避免此类误解(虽不重要,但心里总是觉得这个一个BUG),所以专门澄清说明修复下此BUG:通过两天这个标题直接给阅读的朋友两个信息:1. 内容涉及的深度不深;2. 时原创 2022-07-08 15:30:00 · 241 阅读 · 0 评论 -
单片机stm32零基础入门之--初识STM32 标准库
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的Cortex 微控制器软件 的兼容性问题,ARM 与芯片厂商建立了CMSIS 标准(CortexMicroController Software Interface Standard)。 所谓CMSIS 标准,实际是新建了一个软件抽象层。 CMSIS 标准中最主要的为CMSIS 核心层,它包括了: 内核函数转载 2022-07-08 10:02:26 · 1197 阅读 · 0 评论 -
C语言程序设计之STM32,教你怎么轻松学习嵌入式编程
C语言是面向过程的,而C++是面向对象的C和C++的区别:C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。C与C++的原创 2022-07-08 09:22:55 · 821 阅读 · 0 评论 -
嵌入式软件编程好习惯有哪些?
最近有一些读者来咨询:有什么需要注意的编程好习惯?给大家分享一下。1 多看官方文档不要被这几个字吓到,官方文档其实都是宝藏。一个成熟的技术诞生,可以没有博客没有书籍,但一定会有一个官方文档,毋庸置疑,它一定是最准确、最实时的资料。编写官方文档的人,也通常就是这些技术或者软件的开发者,他们是对这些东西最了解的人,所以编写的文档不仅质量非常高,通常内容也都是最新的。因此,官方文档远比网上的各种博客和论坛等更适合入门学习。当我们遇到很多问题和技术细节的时候,认真将官方文档过一遍,你会发现很多问题和认识模糊的地方都原创 2022-07-07 11:45:55 · 175 阅读 · 0 评论 -
嵌入式系统开发这六点硬件设计需要细心留意
嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,咱们了解下嵌入式的硬件构架。我们知道,CPU是整个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。1 电源的确定 电源对于嵌入式系统中的作用可以看做是空气对人体的作用,甚至更重要:人呼吸的空气中有氧气、二氧化碳和氮气等但是含量稳定,这就相当于电源系统中各种杂波,我们希望得到纯净和稳定符合要求的电源,但由于各种因素制约,只是我们的梦想。这个要关注两个方面:a、原创 2022-07-06 16:00:00 · 1630 阅读 · 1 评论 -
嵌入式开发中的滤波器设计 【文章结尾有资料】
什么是滤波器?各种传感器信号多多少少会携带一些噪声信号,那么通过滤波器就能够更好的降低和去除噪声,还原真实有用信号。滤波器是一个电路,其去除或“过滤掉”频率分量的特定范围。换句话说,它将信号的频谱分离为将要通过的频率分量和将被阻隔的频率分量。如果您对频域分析没有太多经验,您可能仍然不确定这些频率成分是什么,以及它们如何在不能同时具有多个电压值的信号中共存。让我们看一个有助于澄清这个概念的简短例子。假设我们有一个由完美的5kHz正弦波组成的音频信号。我们知道时域中的正弦波是什么样的,在频域中我们只能看到5kH原创 2022-07-05 10:24:55 · 158 阅读 · 0 评论 -
一文掌握C语言数组使用(一)
最近有不少同学询问有关数组的相关问题,相信学过C语言的同学都知道数组的重要性,今天就来给大家分享一下它的使用方法,干货较多,建议收藏观看哦。一、数组1、数组的基本概念数组:类型相同的数据元素的集合,是C语言中的一种构造数据类型,这些元素会顺序地储存在内存的某段区域。2、数组的特点(1)数组是一种引用类型数据,存放在内存中。(2)数组当中存放多个数据(元素),类型必须统一。(如果定义的是int类型,那么里面的所有元素都必须是int类型)(3)数组的长度在运行当中不允许改变。(定义的数组元素个数在运行的转载 2022-06-29 15:30:00 · 279 阅读 · 0 评论 -
C语言的核心和灵魂
提起C语言,大部分开发者很自然就会想到指针二字。没错,作为C的核心和灵魂,它的地位咱们就不再赘述了。今天,我们想跟大家讲的是指针中的两个特有名词:“悬空指针”和“野指针”。悬空指针C语言中的指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。下面这段C语言代码是一个例子,请看:C语言中的“悬空指针”会引发不可预知的错误,而且这种错误一旦发生,很难定位。这是因为在 free(p) 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以原创 2022-06-23 20:30:00 · 356 阅读 · 0 评论