学习一直都是不容易的,在工程师的世界里可能是更加的需要我们付出时间和精力。而学习能力在现在这个时代又是显得十分的重要,相信许多烧友们对编程的学习也是十分感兴趣的,或者正在学习的过程中。

所有小编今天特别整理了一份满满的干货给到小伙伴们学习和借鉴,

创客学院带你零基础学习电子产品设计。http://www.makeru.com.cn/live/3727_1388.html?s=70408

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

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

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

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

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

有效地处理新信息

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

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

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

教学是最好的学习方式,是每隔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学习指南)相关推荐

  1. 从编程小白到全栈开发:基于框架开发服务端

    上文中,我们了解了关于服务器端的一些概念知识,尤其是HTTP协议相关的最基本知识点,今天我想跟大家分享一下在平时正真的开发中,是如何来利用和体现这些内容的. 还记得我在<从编程小白到全栈开发:改 ...

  2. 想学python编程-想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

  3. 编程小白的第一本python入门书-编程小白的第一本 Python 入门书

    编程小白的第一本 Python 入门书 侯爵 (作者) 既然笨办法不能让我学会 Python,那么我决定用一种聪明方法来学,为自己创造学习的捷径.这种高效学习法的核心在于: 1.精简:学习最核心的关键 ...

  4. python编程入门书-编程小白的第一本 Python 入门书

    编程小白的第一本 Python 入门书 侯爵 (作者) 既然笨办法不能让我学会 Python,那么我决定用一种聪明方法来学,为自己创造学习的捷径.这种高效学习法的核心在于: 1.精简:学习最核心的关键 ...

  5. 爬虫python需要什么软件-python的爬虫流程是什么?这是编程小白必须要了解的

    [摘要]网络爬虫是爬虫的应用之一,那么python的爬虫流程是什么?这是编程小白必须要了解的,环球网校小编建议大家可以试着理解这些内容,也许对您的python学习有帮助,毕竟实践出真知,所以你要知道p ...

  6. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  7. 史上最全Python课程整理——我是如何从编程小白到Python研发工程师的

    从编程小白,到Python研发工程师,需要多久呢? 答案就是:91门课,450个小时. 听起来似乎难以实现,但其实如果每天抽出八小时学习,两个月的时间,就能由编程小白转变成为Python工程师,听起来 ...

  8. 哪个专业学python语言_想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

  9. 学习python这门课的感受_关于我学习了编程小白的第一本Python入门书之后的感受 200110900207...

    关于我学习了<编程小白的第一本Python入门书>之后的感受 200110900207 计算机类2班 胡敏 其实这本书更多的不是写关于Python的介绍的,而是关于Python的学习,也就 ...

最新文章

  1. C++中public、protected、private的差别
  2. Flutter 完美的验证码输入框(2 种方法)
  3. [转]MSBuild入门
  4. css a标签去掉下划线_CSS -- 三大特性
  5. [矩形并-扫描线-线段树]Picture
  6. Centos7安装、卸载、使用Docker
  7. 目标检测回归损失函数——IOU、GIOU、DIOU、CIOU、EIOU
  8. 数据可视化软件有什么特点
  9. OpenFire 安装及配置
  10. 安装mysql输入_安装mysql
  11. 如何处理DDoS***
  12. java属于什么语言_java是什么语言 ?是什么系统?
  13. JS中promise是什么?
  14. BootDo架构-基于 Springboot 和 Mybatis 的后台管理系统
  15. 按键精灵模拟键盘批量输入英文大小写
  16. 电路设计的3W原则、5W原则、3H原则、5H原则、20H原则、五五规则
  17. 中国新冠疫情数据可视化
  18. websocket 单机服务 和 分布式集群解决方案
  19. html制作满天星,满天星怎么做干花
  20. 【VBA】 将VBA代码插入Excel中

热门文章

  1. Python “最短”挑战(12.21)
  2. 中文与unicode转换
  3. “以撒的结合”地图是怎样生成的——RogueLike地图随机生成
  4. 从异构软件开发者的角度看异构计算
  5. 电路原理笔记整理,电路原理知识点总结.doc
  6. Java之IO,BIO,NIO,AIO知多少?
  7. 【0day RCE】 Horde Groupware Webmail Edition RCE
  8. 软件测试行业发展前景分析
  9. FFmpeg合并音频文件和视频文件
  10. 大学四年因为知道了这32个网站,我成了别人眼中的大神!