草庐IT

结合自己经历的一场机器人省赛浅谈如何学习单片机

杨枝 2023-07-17 原文

🔔文章目录

💓1、单片机的简介

💒冯·诺依曼结构

要学习一个东西,总得知道它是什么吧~ 对于咱们天天接触的计算机,小伙伴们真的了解它吗?

现在的计算机大多数都是基于冯·诺依曼结构。

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备

一台能够正常工作的计算机都是有CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备等几个主要部件。

而在单片机中,这些部件都被做到一块集成电路芯片上了,因此单片机有时候也称为 微型控制器MCU

💓2、如何学习

💒2.1、学习那种类型的单片机

现在市面上可以了解到的单片机其实蛮多的。 这儿罗列几个常见的吧~


结合我自己的经历以及请教了已经在做嵌入式工作的学长学姐以及自己的指导老师之后,综合建议是先学习51单片机。

为什么了?


🚀2.1.1、入手成本低,老少咸宜

这是从某宝上直接截取的卖价,常规来说,就是70RMB,相当于买一个夏师傅的永昼的价格了,相信大家只要不是我这种穷得是让兄弟帮忙买的,应该都能接受的吧~

STM32的价格,稍微有点劝退了

🚃2.2.1、资源丰富

我第一次接触开发板是在去年10月份的时候,当时是直接跟着碰的STM32,看着它的感觉了,就是这种的:

我记得当初查找一个漫反射波的资料吧,硬是在某度和某DN翻阅了许久都没有找到合适的(当然,也肯定有我十分菜的原因…)。

有了这些得天独厚的优势,此时学习51单片机只需要记住在学习的时候,不仅仅当做51这个类型的MCU来学习。
而是应该化零为整(hh,闫式DP)的思想来考虑,要把它当做单片机来学习,把单片机内部的资源都搞清楚、弄明白,将每个模块的用法尽力理解透彻。
那么当遇到一个没有见过的型号的时候,就能够快速上手,举一反三、融会贯通

💒2.2、学习单片机的最佳方法

🚄2.2.1、实践是检验真理的唯一标准

我去年第一次接触单片机的时候,就是陷入了只停留在代码逻辑层面的误区,就导致自己学的感觉就是,痛苦。

当时是在省赛的早上,寻迹的模块突然不灵了,我自己挺蒙的,以为代码被我误改或者线搭错了?倒腾的了半个小时,心急如焚,此时过来一个其他院的师兄,直接把手指依次放到负责寻迹模块的传感器下面,我记得是大概是用了三分钟的样子,找到出问题的传感器了。

单片机确实是硬件层面的,说抽象一点确实没有程序那么可以直接debug,但是也记住,它就是一件实打实的物品,一个看得见摸得着的东西,那么直接对它操作,它是可以直接进行反馈的。

🚤2.2.2、关于看书

切忌直接听取某乎里的大神说,可以看什么什么书,还依着书单依次去买书了,我就是那种呆B。

我不知道他们是什么居心,或者我太菜了,我观念里学的只是依赖书本,那是为了要应付考试了吧~


单片机的东西是必须落实到代码的操作部上,然后当遇到问题了,在反过头来把书当做字典来获得自己需要的信息,用需求刺激输入的效果,我相信会更好。

🚚2.2.3、鹦鹉学舌

刚出生的孩子叫“爸爸”、“妈妈”的时候,他其实不知道“爸爸”、“妈妈”是什么意思,但是当带着孩子见到爸爸就让他喊“爸爸”,见到妈妈就让他喊“妈妈”,次数多了,孩子就知道谁是爸爸,谁是妈妈了。其实背英语单词也是这种的,见的次数多了,就记住了。


刚开始接触单片机的时候,也属于单片机行业的新生儿。单片机的样子, 单片机内部资源,单片机外围的各种器件,以及对单片机使用C语言,可能都是不太熟悉的,头脑中也没有相应的概念嘛。

没关系,有些概念和方法不理解也没有关系,甚至不需要去理解,只需要跟着去鹦鹉学舌式的学习,一遍遍去模仿,就比如程序,大家跟着抄下来,甚至抄个两三遍,过段时间会发现,好多东西也认识了,好多概念也慢慢清楚了,也能大概看懂别人的小程序了,此时切忌觉得自己看会了就简单复制粘贴。

再类比到我比较熟悉额算法吧,闫总说,其实学算法其实也是体力活,也就是这个意思了,在一遍一遍的记忆之后,能够他规定的时间里将一个算法独立的A出来,大致也就是掌握了,只是日后可能会有小疏漏、小遗忘。学习是一个记忆的过程,一个模仿的过程,这个游戏,感觉更像谁能够在更少的时间里记住更多的东西,而你记住的这些东西能在你需要的时候,从脑子里蹦出来 。

🚕2.2.4、照葫芦画瓢,切记眼高手低

大多数人学习的时候,可能特别是学数学或是在Bilibili大学看老师敲代码,看到就懂啦,等到自己实际着手去写的时候,却是遍地通红…

我听了前辈们的建议,将他们的劝诫直接放在这儿吧,是分享,也是对自己的提醒。吾日三省吾身

在学习完当前课程的内容,把第一步顺利完成以后,然后把视频、源代码统统关掉。
自己通过原理图和查找非源代码的其他任何资料,把当节课的程序重新默写出来,边写边多少理解那么一点点,而不是纯粹的死记,应该说是记忆加理解的结合。
甚至学过几节课以后,可以回头把前面曾经这样实现过的内容,再按照这种方法实现一遍。千万不要认为这一步没有必要,这一步是能否学会单片机关键的一步喔。

🚒2.2.5、他山之石,可以攻玉

听着好像挺高端的样子,玄之又玄的味道了,说直白一点了,面向谷歌和百度编程

倘若是从零开发一个产品,可能会走很多弯路,也会遇到前人曾经遇到过的问题,别人可能也记录了博客,此时就可以借助他人的经验来解决问题了。百度、谷歌、CSDN或是Stack Overflow,总有人曾经遇到过类似的吧~
同时也鼓励大家记录自己怎么解决bug,相互帮助,共同成长啦啦啦~

🚏2.2.6、温故而知新,可以为师矣

每个一段时间可以总结一下所学的知识,可以自己做思维导图,也可以输出博客。著名的费曼学习法了。

💒2.3、学习单片机的准备工作

有台电脑、有块开发板这种废话我就不说了吧。主要说说心理上的准备:

战略上藐视它,别人能做出的东西,咱们为什么做不出来,就比别人差吗,不见得吧。

战术上重视它因为始终是面向一个冰冷的机器,无法直接从内部剖析它。在学习的时候,着重去从底层思考实现原理。

💒2.4、学习单片机的常见疑问

很多人想问的应该是学嵌入式以后好找工作吗,这个了,我学嵌入式只是为了学科竞赛以及还我指导老师的人情。
我不画饼,我以前听Unity3D游戏开发的课程时候,是一个清华的老师在讲,他只是说,嵌入式位置比较少,技术越老越吃香。
我不用我点破了吧~

有关结合自己经历的一场机器人省赛浅谈如何学习单片机的更多相关文章

  1. ruby-on-rails - 结合 meta_search 与 acts_as_taggable_on - 2

    我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法

  2. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  3. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  4. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  5. ruby-on-rails - 将 Amazon Simple Notification service SNS 与 ruby​​ 结合使用 - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要从基于ruby​​的应用程序使用AmazonSimpleNotificationService,但不知道从哪里开始。您对从哪里开始有什么建议吗?

  6. 机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值 - 2

    文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk​=Var(yt​)Cov(yt​,yt−k​)​其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞

  7. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  8. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  9. ruby-on-rails - 将 Rails 与 Paperclip 和 SWFUpload 结合使用 - 2

    我有一个基本的Rails应用程序测试,其中包含一个用回形针处理的照片字段的用户模型。我创建了能够创建/编辑用户的View,并且照片上传工作正常。Editinguseruser_path(@user),:html=>{:method=>"put",:multipart=>true}do|f|%>|然后,我想将SWFUpload集成到我的应用程序中。我试着按照这个tutorial并运行testproject没有任何成功:浏览按钮不会打开文件对话框,并抛出错误#2176,这是关于selectFiles()方法的。首先,问题是Flashv.10与项目中包含的旧版本SWFUpload(2.1.0

  10. ruby - AWS 上远程机器上的进程计数 - 2

    我正在为在AmazonEC2实例上运行的应用程序设计一个AutoScaling系统。应用程序从SQS读取消息并对其进行处理。AutoScaling系统将监控两件事:SQS中的消息数量,所有EC2机器上运行的进程总数。例如,如果SQS中的消息数量超过3000,我希望系统自动缩放,创建一个新的EC2实例,在其上部署代码,当消息数量低于2000时,我希望系统终止EC2实例.我正在用Ruby和Capistrano做这件事。我的问题是:我无法找到一种方法来确定在所有EC2机器上运行的进程数并将该数字保存在变量中。你能帮帮我吗? 最佳答案 您可

随机推荐