对单片机的一点理解

这篇具有很好参考价值的文章主要介绍了对单片机的一点理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

大一时学过一段时间的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单片机软件工程师往往比较封闭,没什么机会去接触高级的单片机、工具链,也没什么机会去研究算法,所以其实很可怕,这种做个五年十年水平都不会差太多。文章来源地址https://www.toymoban.com/news/detail-851289.html

到了这里,关于对单片机的一点理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(57)
  • STM32单片机(二)STM32环境搭建

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(58)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(55)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(54)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(54)
  • 【STM32】STM32单片机结构及部件原理

    STM32是目前比较常见并且多功能的单片机,要想学习STM32,首先要去了解它的基本构成部分以及各部分的原理。 单片机型号:正点原子STM32F103ZET6 目录 STM32内部结构总览图: 2.内部结构解析         1.内核 :STM32F103ZET6采用的是 ARM Cortex-M3 处理器,内核可以理解为单片机 处

    2023年04月08日
    浏览(46)
  • 【单片机】STM32单片机,定时器的输入捕获,基于捕获的频率计,STM32F103

    下面的定时器都具有输入捕获能力: 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部计数频率计的缺点:需要两个定时器配合,最高能测量的频率是否有限制我没具体尝试。 基于捕获的频率计的缺点:最高能测量的频率有限制。 TIM3_CH1 PWM PA6 10KHZ。 输入

    2024年02月14日
    浏览(52)
  • STM32-01-认识单片机

    单片机是什么? 单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片。 下面是电脑与单片机的对应关系: 单片机的特点? 体积小:5mmx5mm 功耗低:mA级 集成度高:IO、TIM、AD、DA 使用方便:C、Debug 拓展灵活:IIC、SPI、FSMC 单片机有什么用? 仪器仪表:电源、

    2024年02月03日
    浏览(46)
  • 单片机简介(STM32介绍)

        单片机是 单片微型计算机 的简称,Mcu是Microcontroller的简称,也就是嵌入式微控制器。采用集成电路技术将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、定时器/计时器、多种I/O口和中断系统等功能集成到一块硅片上。可以说单片机就是一个小而完善

    2024年02月16日
    浏览(36)
  • stm32系列单片机介绍

        stm32是基于ARM® Cortex®  内核的 32位微控制器和微处理器。常见的内核有:     Cortex-M0,代表型号STM32F0、STM32L0;     Cortex-M0+,代表型号STM32C0(23年新推出,主要针对低成本);     Cortex-M3,代表型号STM32F1、STM32F2、STM32L1;     Cortex-M4,代表型号STM32F3(混合信号)、

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包