0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习编程时最常见的问题:如何尽可能有效地处理新信息,如何保持动力

lPCU_elecfans 来源:未知 作者:李倩 2018-07-31 10:55 次阅读

学习一直都是不容易的,在工程师的世界里可能是更加的需要我们付出时间和精力。而学习能力在现在这个时代又是显得十分的重要,相信许多烧友们对编程的学习也是十分感兴趣的,或者正在学习的过程中。所有小编今天特别整理了一份满满的干货给到小伙伴们学习和借鉴。

我知道现在有成千上万的资源可以“教你如何编码”。但是,这绝对不是这里最重要的部分,也不是这篇文章的主题。重要的是你如何建立起良好的学习习惯,如何更好的吸收处理新知识,时刻保持自己的学习动力,并把注意力放在核心问题上。

如果你愿意远离你的舒适区!你一定会为学习到新知识而感到兴奋,并且能获得优越感,久而久之,你也一定会成为一名优秀的开发者

我已经有多年的执教经验,当我的学生告诉我他们没有动力的时候,我经常看到一种现象,他们只执着于最终的大目标,而忽视了每一次小小的进步,这让他们始终觉得离目标很远,从而导致挫败感。当我刚开始学编程的时候也有同样的想法,不断的和身边的人对比,觉得他们比我优秀太多,我永远无法达到我要的高度。

正是一直存在这样的想法,往往忽视了自己做出的努力,即便自己轻松创建出一个比之前复杂的应用程序时,也不会有成就感,因为心里一直沉浸在和更有经验的开发者的比较中。

学习如何编程是最困难的,每个人都在努力克服。本文会把重心放在学习编程时最常见的问题上:如何尽可能有效地处理新信息,如何保持动力。

有效地处理新信息

每个人吸收新知识的方式不同,所以,在开始学习代码之前,你首先要做的就是先学习如何学习。

很快你就会发现,最常见的两种学习资源就是:在线课程和语言文档。除超人类的天才外,是没人能够在只看课程/读纯文本的情况下还能记住所有知识点,所以每当你在看视频课程或阅读文档时,感到迷茫和困惑是完全正常的,毕竟对于没有太多知识的人来说,通过一些极客术语来理解代码是蛮难的。

无论你觉得自己有多优秀都不要忽略基础知识,开始学一门语言的时候不要跳过任何一个细节,如果你一开始不注意的话,会后悔的。即便是阅读文档,也请从第一页开始阅读,相信我:注意细节,过后会感谢今天的你。

教学是最好的学习方式,是每隔10分钟,就停下来用自己的话解释一下你刚刚所学到的东西,即便周围没有人,你可能会觉得做起来十分困难,但这种做法可以让你立刻知道自己还不了解的知识点有哪些,你可以及时巩固研究,就记下来,通过实践编码,会让你记忆的更加简单深刻。

不要只听课程和阅读文档,你还应通过积极参加创建自己的个人项目,把你所学的每一个新的知识点都运用上来,这听起来似乎也不是那么简单,但你只要一直坚持,你一定可以提高你的编程技能。

保持动力

很多人问我日常生活中如何让自己编写出这么多代码,思考了很久之后,得出以下答案:

每个人否喜欢玩游戏,不论什么类型的游戏,因为游戏可以带给你即时的满足感,这就是动机成因,通过编程,我也获得到了满足感,但编程不是游戏,没有你想象中的容易。

设立小目标,不是因为你不思进取,而是因为你不注重改善,做一个当天完成的事情待办列表:也许只是读一页,或者只看一个课程更或者只是编写10行代码,看到自己完成整个待办事项清单,你会获得满足感,对自己的进步更有信心。“我已经完成了今天的目标任务”比“我只完成了2%的课程”要好得多,及时行乐是很重要的。

不断提醒自己,你已经走了多远。这一点经常被忽视,你不会意识到自己每天都在进步,但相信我,你只要每天都编码(哪怕一点点),你也会越来越好。所以最好的方法是写日记,每天用一句话来记录自己的困惑,一个月后再回头看看,你可以看到自己正在变得更好。

在你真正感兴趣的个人项目上编程,这里不包含在待办事项列表中,而是你真正想要建立的项目,也不要想到自动驾驶汽车、机器人等等这些庞大的项目,可以选择一些小项目,比如创建一个网站或者一个小型游戏,这种项目会让你更有动力去完成它,一旦项目完成,你就会有成就感。

意识到自己比想象中要优秀。你可能会觉得你身边的每个人知道的东西都比你多的多,这也被称为冒名顶替者综合征。但事实并非如此,只要你有足够的学习动力、足够努力地编码,你一定可以可以成为一名优秀的开发人员。

要时刻牢记的事

不要和其他开发者对比。非常老套的建议,但这是至关重要的。你比你想象中的进步更快。我下面这张照片,如果在4个月前看到这些屏幕中的代码,我会感到害怕的。但现在我完全可以找出这里面犯了多少错误

你比你想象的要进步得多。每一次学习或编码,你都在成长。

每个人一开始都很迷茫,大家都是一样的,但这并不意味着你会成为一个糟糕的程序员。你现在的想法只是学习过程的一部分。不久,你会回头看看这时的你,你一定会认同我说的!

最后如果可以,试着找一位导师。通过向其求教相信更有助于你克服问题并获得新的启发。

好的,讲了这么多理论学习编程语言的方法,下面我们来讲讲如何学习STM32呢?

首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。

整理如下:

AMBA:先进单片机总线架构 ADK:AMBA设计套件AHB:先进高性能总线 AHB-AP:AHB访问端口APB:先进外设总线 ARM ARM:ARM架构参考手册ASIC:行业领域专用集成电路 ATB :先进跟踪总线

BE8:字节不变式大端模式 CPI:每条指令的周期数

DAP:调试访问端口 DSP数字信号处理(器)DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元FPB:闪存地址重载及断点 FSR:fault状态寄存器

HTM:Core Sight AHB跟踪宏单元ICE:在线仿真器 IDE:集成开发环境

IRQ:中断请求(通常是外中断请求)ISA:指令系统架构 ISR:中断服务例程ITM:仪器化跟踪宏单元

JTAG:连接点测试行动组(一个关于测试和调试接口的标准)LR:连接寄存器

LSB:最低有效位

MSB:最高有效位LSU:加载存储单元MCU微控制器单元

MPU:存储器保护单元

MMU:存储器管理单元MSP:主堆栈指针NMI:不可屏蔽中断NVIC:嵌套向量中断控制器PC:程序计数器PPB:私有外设总线

Cortex-M3芯片简介

1、芯片的基本结构如下图

2、关于ARMv7的知识了解

在这个版本中,内核架构首次从单一款式变成3种款式。

款式A:设计用于高性能的“开放应用平台”——越来越接近电脑

款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。

款式M:用于深度嵌入的,单片机风格的系统中。

介绍A:用于高性能的“开放应用平台”,应用在那些需要运行复杂应用程序的处理器。支持大型嵌入式操作系统

R:用于高端的嵌入式系统,要求实时性的。

M:用于深度嵌入的、单片机风格的系统中。

3、Cortex-M3处理器的舞台

高性能+高代码密度+小硅片面积,使得CM3大面积地成为理想的处理平台,主要应用在以下领域:

(1)低成本单片机(2)汽车电子(3)数据通信(4)工业控制(5)消费类电子产品

4、Cortex-M3的简化图

5、寄存器组

处理器拥有R0-R15的寄存器组,其中R13最为堆栈指针SP,SP有两个,但是同一时刻只能有一个可以看到,这就是所谓的“banked”寄存器。

a、R0-R12都是 32位通用寄存器,用于数据操作。但是注意:绝大多数 16位Thumb指令只能访问R0-R7,而 32位 Thumb-2指令可以访问所有寄存器。

b、Cortex-M3拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。

6、Cortex-M3的简评

a、高性能

许多指令都是单周期的——包括乘法相关指令。并且从整体性能上,Cortex-M3比得过绝大多数其它的架构。

指令总线和数据总线被分开,取值和访内可以并行不悖 。

Thumb-2的到来告别了状态切换的旧世代,再也不需要花时间来切换于 32位 ARM状态和16位Thumb状态之间了。这简化了软件开发和代码维护,使产品面市更快。

Thumb-2指令集为编程带来了更多的灵活性。许多数据操作现在能用更短的代码搞定,这意味着 Cortex-M3的代码密度更高,也就对存储器的需求更少。

取指都按 32位处理。同一周期最多可以取出两条指令,留下了更多的带宽给数据传输。

Cortex-M3的设计允许单片机高频运行(现代半导体制造技术能保证 100MHz以上的速度)即使在相同的速度下运行,CM3的每指令周期数(CPI)也更低,于是同样的 MHz下可以做更多的工作;另一方面,也使同一个应用在 CM3上需要更低的主频。

b、先进的中断处理功能

内建的嵌套向量中断控制器支持240条外部中断输入。向量化的中断功能大大减少了中断延迟,因为不在需要软件去判断中断源。中断的嵌套也是在硬件水平上实现的,不需要软件代码来实现。

Cortex-M3在进入异常服务例程时,自动压栈了 R0-R3, R12, LR, PSR 和PC,并且在返回时自动弹出它们,这多清爽!既加速了中断的响应,也再不需要汇编语言代码了

NVIC支持对每一路中断设置不同的优先级,使得中断管理极富弹性。最粗线条的实现也至少要支持 8级优先级,而且还能动态地被修改。

优化中断响应还有两招,它们分别是“咬尾中断机制”和“晚到中断机制”。

有些需要较多周期才能执行完的指令,是可以被中断-继续的——就好比它们是一串指令一样。

这些指令包括加载多个寄存器(LDM),存储多个寄存器(STM),多个寄存器参与的PUSH,以及多个寄存器参与的 POP。

除非系统被彻底地锁定,NMI(不可屏蔽中断)会在收到请求的第一时间予以响应。对很多安全-关键(safety-critical)的应用,NMI都是必不可少的(如化学反应即将失控时的紧急停机)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10897

    浏览量

    355816
  • 编码
    +关注

    关注

    6

    文章

    942

    浏览量

    54820
  • Cortex-M3
    +关注

    关注

    9

    文章

    270

    浏览量

    59464

原文标题:想要从编程小白成为达人,这些你必须知道!(附STM32学习指南)

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么会出现电压降 如何实现尽可能低的电压降

    高速电流波形会导致集成电路电压下降。如果足够严重,电压降可能会重置微处理器或导致测试结果出现异常。本文解释了为什么会出现电压降,提供了多种方法来通过选择最佳负载引线和电源以及使用本地旁路来实现尽可能低的电压降。
    发表于 02-06 10:02 6757次阅读
    为什么会出现电压降 如何实现<b class='flag-5'>尽可能</b>低的电压降

    哪里可以买到尽可能高频率的无线能量发射接收模块

    哪里可以买到尽可能高频率的无线能量发射接收模块。哪里可以买到尽可能高频率的无线能量发射接收模块。哪里可以买到尽可能高频率的无线能量发射接收模块。哪里可以买到尽可能高频率的无线能量发射接
    发表于 12-05 22:48

    请问哪位大神可以推荐8位PIC单片机或者16位的单片机,要求端口尽可能多些的?

    请问各位,最近老师要我选个8位PIC单片机或者16位的单片机,要求端口尽可能多些,我之前也没怎么接触过单片机这块的内容,感觉很棘手,他还给出了一种开发工具PICSTART-PLUS开发编程器,但是我
    发表于 07-03 03:44

    请问为什么低噪声放大器的第一级要尽可能的放大?

    为什么低噪声放大器的第一级要尽可能的放大?
    发表于 08-24 07:15

    如何确保尽可能高效地测试开关稳压器?

    问题:如何确保尽可能高效地测试开关稳压器?
    发表于 03-01 08:50

    STM32F756 AES加密不可能有同样的输出

    项目中需要pc端使用同样的AES算法,密钥和初始向量加密,但是STM32中使用跟加密协处理器配套的函数,我现在直觉pc端的AES实现跟硬件端同样输入不可能有同样的输出,请问各位大神有没有遇到这种情况怎么解决,或者哪位有pc端配套的AEScbc算法,在此谢过!
    发表于 05-21 14:33

    数据采集系统信号路径中发现的最常见的滤波器是低通滤波器

    编程二阶低通滤波器电路。在数据采集系统信号路径中发现的最常见的滤波器是低通滤波器。这种类型的滤波器通常用于减少A / D转换器混叠误差。如果通过多路复用器向A / D转换器施加多个信号,则每个信号源可能有其自己的一组滤波器要求
    发表于 08-21 08:53

    缓冲VDAC输出损失如何尽可能的减少?

    ,但是连接后电压不会下降到1.9V以下。JRK直接从电位器工作。我想在PSoC和控制器之间放置一个运放来缓冲这个,但是我想尽可能少的损失,尽可能保持输出的精确性。我需要一个DIL包,这样我就可以剥离
    发表于 10-08 12:43

    是否有任何选项可以更改NFC的场功率以使读取尽可能节能?

    我需要让 ST25R3916 读取尽可能节能。我正在搜索文档,但我只看到这个稳压器 (0x2C)。是否有任何选项可以更改 NFC 的场功率以使读取尽可能节能?NFC 标签将始终位于固定范围内的固定位置。重要提示:我们不是在谈论检测卡——因为电容检测已经足够好了,但只是在读
    发表于 02-02 07:43

    为什么在MCU中要尽可能少用浮点数运算?

    为什么在MCU中要尽可能少用浮点数运算
    发表于 10-09 08:06

    为什么在MCU中要尽可能少用全局变量?

    为什么在MCU中要尽可能少用全局变量
    发表于 10-11 07:07

    为什么低噪声放大器的第一级要尽可能的放大呀?

    为什么低噪声放大器的第一级要尽可能的放大?
    发表于 11-21 08:01

    UPS蓄电池的设计为什么要让电池保持尽可能的温度

    在UPS 的实际应用中,温度对电池的自然老化过程有很大影响。详细的实验数据表明温度每上升 5℃,电池寿命就下降 10%,所以 UPS 蓄电池的设计应让电池保持尽可能的温度。
    发表于 08-09 15:22 1214次阅读

    Watson Works提供了数据驱动的见解,以帮助雇主在工作场所重入

    IBM区块链和生态系统认知应用高级副总裁Bob Lord说:“我们设计了Watson Works,以帮助企业尽可能有效地应对持续的COVID-19健康危机 。
    的头像 发表于 09-10 16:06 2233次阅读

    如何测量运算放大器的输入电容以尽可能降低噪声

    这些问题。 运算放大器被广泛用于各种电子电路中。它们用于小电压的放大,以进一步执行信号处理。烟雾探测器、光电二极管跨阻放大器、医疗器械,甚至工业控制系统等应用都需要尽可能低的运算放大器输入电容,因为这会影响噪声增益(
    的头像 发表于 04-11 03:45 676次阅读
    如何测量运算放大器的输入电容以<b class='flag-5'>尽可能</b>降低噪声