对单片机的一点理解

前言

大一时学过一段时间的51单片机,后面就一直研究STM32和算法,最近工作搞51单片机有半年了,有一些自己的想法,跟公司的工程师也探讨了一些,结合聊天记录,写了这篇博客,希望对读者有帮助。

有纰漏请指出,转载请说明。

学习交流请发邮件 1280253714@qq.com

对单片机的一点理解

问:单片机怎么选型

        消费电子类的低端产品,公司对单片机的选型一般有两个原则,一是这款单片机用得熟不熟,这是最重要的,很多51单片机软件工程师都不会用32位机。还有一个是成本,一般都是秉承着能用就行,够用就好的原则,能用三毛钱的单片机绝对不会去用五毛钱的。低端产品对单片机的成本是很敏感的,因为硬件成本就是从这里抠出来的。

       有些产品卖几千块钱用的单片机是几十块钱的,更高级的用海思、高通的芯片,那个是很贵的。在这个角度上看其实就没有太过意去扣这个成本,反倒是后续产品的拓展性可维护性,还有单片机的性能够不够强悍,后续开发过程中会不会出现说性能不够用的情况。还有这个单片机配套的开发工具也很重要,如果单片机是OTP的或者是不支持仿真的,在一些大型项目上开发起来就很吃力。

        如果特别注重考虑功耗,那么在那种可穿戴设备用的会比较多。像是手环啊,心率监测仪啊,人工心脏。

问:为什么很多51单片机没法做大型项目呢?

        其实在我看来,写代码并不是说为了完成一个功能就OK了。

        还要考虑代码的规范性,可读性,后续的拓展性。

        越是底层的代码,对硬件的操作就越为简单。就比如说51单片机,想要点个灯,那么只需要设置那个IO口为输出,同时输出高电平就可以了。

        但是如果你有机会看到rtos或者linux的代码,它的点灯操作是非常复杂的,因为它要考虑可移植性和兼容性。高级的计算机语言,一般是学C++或Java时,会学到一种面向对象的编程思想,编程思想一般科班软件或者计算机才会去学,所以其实很多单片机软件工程师都是面向硬件编程,面向开发板编程,这就导致了一个问题,如果要上大型项目的话,会非常困难。

        而且在消费级电子产品用的51单片机,他搞不了浮点运算,这个是一个跟32位单片机很重要的区别,因为很多算法都是需要硬件浮点运算来支持的,做不了浮点运算,意味着很多算法就没有实现的可能,那么写的程序也只能是那种比较简单的。

        今天我搞了一个线性插值算法,用我自己的32单片机,很快就搞定了,但是我在公司用51单片机折腾了两个小时,后面还是没法实现,只能妥协,自己在excel里边把数值算出来。本来这个算的过程是可以交给单片机来实现的,在51这边就只能是手算,这个是一个很蠢的做法,但是没办法,硬件被限制住了。

        你可以看到,很多51单片机工程师工作了那么多年,也只能做这些消费电子产品。大型项目,多个设备协同工作的情况就很难了。

问:高性能单片机能实现51单片机无法实现的什么功能

        很多51单片机,外设无非就是定时器、外部中断、PWM、ADC、串口,这些都只能完成一些比较简单的功能。一般时钟也就是8M,外设的时钟也都是由这个高速时钟分频而来,顶多再加一个低速时钟用来计时。特别是中断往往只有一个入口,且没法定义中断优先级,那么实时性就无法保证。而且RAM顶多1K、FLASH顶多32K,这种情况下根本没法跑操作系统,最简单的操作系统最小内核可能都要16K了。

        32位单片机的时钟树比较复杂,外设也多了很多,例如常用的I2C、I2S、SPI、DMA、SAI、SDIO、CAN、ETH等等,用上这些单片机外设的产品都是相对复杂的。       

        现在比较好的单片机其实已经能媲美数字信号处理器了,它硬件内置了DSP,不知道你有没有了解过快速傅里叶变换?频谱分析仪就是用这个来实现的,如果要用51单片机,那简直是天方夜谭 。

        要是你了解过直流无刷电机的话,它的软件还是相对挺难的,因为他用到了PID,一般是串级PID,内环是速度环,外环是位置环,这个是要实时大量的浮点运算的,51单片机根本就做不来。51单片机基本上也就搞那些直流有刷电机了,就是给电就能转的那种,这种很明显的缺点是效率不高,而且完全没有控制精度可言。现在还有大量低端产品用的就是这种直流有刷电机,给电就转,转到哪个位置完全不清楚。

问:为什么51单片机工程师很难有长远的发展空间

         51单片机没法做浮点运算,也不能做数字信号处理,所以很多大学相关知识都不需要用到。

        如果是电子专业出身的话,通信原理,信号与系统、数字信号处理,经典控制论,学的这些知识通通都用不上。

        哦,对了,还有一个很重要的,51单片机是没法搞无线通信的,通信原理的知识也可以还给老师了。

        硬件层面上,做不了高速电路,很多消费电子产品的工程师应该都没接触过高速电路,电阻电容电感在高速电路的情况下,他不是那种纯粹的电阻电容电感,所以那些什么ESR、ESL应该也没什么人会去考虑,单片机的那一块,好像没有去考虑到通信串扰的问题。      

        用到51单片机的项目开发简单,并且往往并行项目很多,大量的时间精力都花费在重复性的产品中,做到后面都是体力活了,没有什么人去想过要把这些功能做到极致,去做好优化。

        并且因为项目简单且重复,很多时候,有些程序都不怎么需要改,直接换一些参数就用到相近的产品中去了。很多单片机工程师都没有去考虑过程序的可移植性,是因为他们没有接触过大型项目,没有接触过需要整个团队来完成一个项目的情况,简单产品的软件通常都只需要一个工程师来完成,所以函数的接口也没去考虑过,规范性就更难说了。而且因为产品功能比较简单,定义的变量也比较少,不会去用到C语言中的高级用法,像是结构体、枚举、指针等等。甚至于有些单片机是不带C语言的,标准库的,memcpy、memset都不支持。所以即使是51单片机也是很简单的功能实现。

        所以,51单片机软件工程师往往比较封闭,没什么机会去接触高级的单片机、工具链,也没什么机会去研究算法,所以其实很可怕,这种做个五年十年水平都不会差太多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL修改数据表的结构

创建数据库 -- create database 创建的数据库名; create database test; 这里创建了一个名为 test 的数据库 选择需要使用的数据库 -- use 数据库名; use test; 这里使用 test 数据库 创建数据表 -- create table 表名(字段名1 数据类型(长度) 约束,字段名2 数据类型(长…

【强化学习的数学原理-赵世钰】课程笔记(九)策略梯度方法(Policy Gradient Method)

目录 一.policy gradient 的基本思路(Basic idea of policy gradient) 二.定义最优策略的 metrics,也就是 objective function 是什么 三.objective function 的 gradient 四.梯度上升算法(REINFORCE) 五.总结 上…

企业常用命令(touch/别名/重定向/Linux字符)7368字详谈

企业高薪思维: 企业(工作/学习中)操作前备份,操作后检查 最小化原则 1.安装软件最小化 2.参数选项最小化 3.登录用户权限最小化(不用root登录) 要想成功/学习上/工作上 永远比别人多做一点点(别…

milvus querycoord启动源码分析

querycoord启动源码分析 结构体 // Server is the grpc server of QueryCoord. type Server struct {wg sync.WaitGrouploopCtx context.ContextloopCancel context.CancelFuncgrpcServer *grpc.ServerserverID atomic.Int64grpcErrChan chan error// 是一个接口类…

DDD领域设计基础

1概述 作为架构师,我们在业务建模的时候不能完全凭经验、感觉,我们还得有一套方法论,DDD领域驱动恰巧可以作为业务建模的方法论来使用。 2 为什么要使用DDD 2.1 为什么需要DDD 复杂系统设计:系统多,业务逻辑复杂&a…

ABeam德硕|旗下艾宾信息技术开发上海、西安、大连三地校招信息公开,期待您的加入!

寻人启事 想要找到你! 关于我们 ABeam Consulting全球 ABeam Consulting集团成立于1981年,总部位于日本东京,历经40余年的发展,先后在中国、韩国、泰国、新加坡、英国、德国、美国等全球多个国家和地区设立了服务网点&#xff0…

Python和R概率统计算法建模评估气象和运动

🎯要点 概率统计数学:🎯Python和R计算和算法实现气象学: 计算和可视化:🎯全球陆地-海洋平均年平均表面温度:🖊直方图温度异常,🖊显示分位数-分位数&#xff…

使用Socket实现局域网内聊天室

需要提前了解的Socket知识点: Client端输入的IP都是Server所在电脑的IPServer最好设置0.0.0.0这样无论迁移到哪个电脑上,都是那台电脑的IPClient和Server必须在同一个局域网之下,否则不能通信;如果要实现跨局域网通信&#xff0c…

幻兽帕鲁老板公开发声:腾讯正在制作幻兽帕鲁克隆版

昨天,Pocketpair的老板出来指责中国游戏公司抄袭了他们的游戏Palworld,说这简直是太不可思议了。 Pocketpair的CEO Takuro Mizobe发布了一个叫Auroria的游戏的截图,然后说:“腾讯正在制作Palworld的克隆游戏!在中国&a…

Python根据主播直播时间段判定订单销售额归属

写在前面:最近在群里看到一个这样的直播电商的场景觉得还是挺有趣的,于是就想用Python来实现。 需求描述:根据主播直播时间段结合销售订单的付款时间判断所属销售的归属 生成主播在线直播时间段数据 from datetime import datetime, time…

zabbix监控配置(添加主机、主机组和添加监控项等)

zabbix监控配置 文章目录 zabbix监控配置1.添加主机组2.添加主机(linux)3.添加主机(windows)4.监控项配置(通过模板添加)5.监控项配置(手动添加) 1.添加主机组 2.添加主机&#xff0…

学习Rust的第5天:控制流

Control flow, as the name suggests controls the flow of the program, based on a condition. 控制流,顾名思义,根据条件控制程序的流。 If expression If表达式 An if expression is used when you want to execute a block of code if a condition …

自定义vue-cli 实现预设模板项目

模板结构 主要包括四个部分: preset.jsonprompts.jsgenerator/index.jstemplate/ 项目最终结构 preset.json preset.json 中是一个包含创建新项目所需预定义选项和插件的 JSON 对象,让用户无需在命令提示中选择它们,简称预设;…

openGauss学习笔记-265 openGauss性能调优-TPCC性能调优测试指导-操作系统配置

文章目录 openGauss学习笔记-265 openGauss性能调优-TPCC性能调优测试指导-操作系统配置265.1安装openEuler操作系统265.2 修改操作系统内核PAGESIZE为64KB。265.3 关闭CPU中断的服务irqbalance openGauss学习笔记-265 openGauss性能调优-TPCC性能调优测试指导-操作系统配置 本…

绩效考核:关键成功因素法(CSF)

绩效考核是企业管理的核心环节,其目的是为了确保员工的工作表现符合组织的目标和期望。然而,传统的绩效考核方法往往只关注员工的业绩和产出,而忽略了员工的能力和潜力。关键成功因素法(CSF)作为一种新型的绩效考核方法…

Scala详解(5)

Scala 集合 概述 集合本质上就是一个用于存储1个到多个数据的容器。在Scala中,集合可以分为三大类:Seq(序列),Set(集合)和Map(映射)。基于这三大类,衍生出来众多的子类 序列:元素有序可重复 集合:元素无…

通过控制台获取iptv直播地址

控制台代码1: // 获取所有包含频道名称和URL的<div>和<td>元素 const divElements = document.querySelectorAll(div[style="float: left;"]); const tdElements = document.querySelectorAll(td[style="padding-left: 6px;"]);// 创建空数组…

2011年认证杯SPSSPRO杯数学建模C题(第二阶段)你的爱车入保险了吗全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 C题 你的爱车入保险了吗 原题再现&#xff1a; 近几年&#xff0c;国内汽车销售市场异常火爆&#xff0c;销售量屡创新高。车轮上的世界&#xff0c;保险已经与我们如影随形。汽车保险&#xff0c;简称车险&#xff0c;是指对机动车辆由于自然…

计算机考研都将采用408!?

这个根本不可能&#xff0c;高考还没做到全国统一考试呢 每个学校对于计算机招生的需求是不一样的&#xff0c;比如清华大学&#xff0c;专业课912&#xff0c;算的上是最难的计算机专业课了&#xff0c;那他为什么搞这么难啊&#xff0c;还不是因为那群敢考清华的卷王们太变态…

Python数据结构【二】查找

前言 可私聊进一千多人Python全栈交流群&#xff08;手把手教学&#xff0c;问题解答&#xff09; 进群可领取Python全栈教程视频 多得数不过来的计算机书籍&#xff1a;基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。 &#x1f680;&a…