当前课程知识点:智能车制作:嵌入式系统 >  第四章 MCU外设与开发 >  4.4 嵌入式开发的基本概念与工具链 >  Video

返回《智能车制作:嵌入式系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《智能车制作:嵌入式系统》慕课在线视频列表

Video课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家回到ARM微控制器

与嵌入式系统的慕课课程

我们继续我们第四个章节

ARM微控制器开发的学习

那么在过去的课程中

我们已经学习了嵌入式的历史渊源

以及ARM微处理器

微控制器内核的结构

以及它的基本开发方法

就如前几节课我们所说

在第四个章节呢

我们选了最最简单的一类外设

也是最最经典在所有嵌入式系统当中

都最基本的IO这一类外设

来学习ARM嵌入式开发的一些基本思路和方法

了解如何通过计算机的编程

使这样一个外设工作起来跟外界发生关系

或者用个通俗一点的说法

就是如何真正地在学了那么多

好像很有意思的历史或者是很酷的知识之后

我们真正能够把这样一个嵌入式系统给玩起来

那么前面三个小节我们学了IO外设的寄存器

它的地址映射以及如何用三个步骤来进行编程

点个灯 读个按键

那么实际的编程开发怎么做

以及我们刚刚写的那些C语言代码

它背后的含义和依据是什么

是我们接下来几节课要给大家深入探讨

相信通过这种学习

我们对于整个ARM的嵌入式开发会有更好的理解

那么从开发的角度来讲

这一个小节呢

我想给大家拉一拉

我们在嵌入式开发里头

所具备的一些常见的基本知识和名词

或者说

我们建立对于嵌入式开发的一个基本概念

日后谈论起嵌入式开发的时候我们至少不怵

并且对于我们做的每件事用的每个工具

有一个基本的概念

那么我们说起嵌入式开发的时候

会提到很多很多词汇

比如大家会听到说有

开发板

然后呢会有这个最小系统板

会有我们的电路板

然后会有编译

汇编 链接

还有集成开发环境 软件

模拟器 仿真器 调试器 烧写器

等等这样很多很多的词汇

然后还有一些英文的术语

比如BDM JTAG

还有大家现在很好奇的USBDM是什么

OpenSDA是什么

那么这些东西我们把它梳理梳理

它会构成一个工具链

那么最简单的呢

首先我们完成一个嵌入式开发

我们一定要有一个嵌入式的系统电路板

我们一般来讲做为学习入门

很少会说是拿着一个现成的产品来做代码开发

从学习的角度我们都会有一个更加通用

更加common的这样一个板子

那么在我们这个行当里

一般会把它称为EVB

那么很多厂商都会提供官方的EVB

EVB是Evaluation Board的缩写

也就是评估板

那么任何一个厂商

大家想一想

一个芯片厂商它做了个芯片

它其实最担心的是大家用不起来这个芯片

它不会把这芯片上的很多技术

像秘密一样捂着

而是它会努力的把它open出来

让每个人都尽可能去尝试和体验它

能够把它的功能发挥出来

所以呢

很多厂商会提供这样EVB板

它会把这个芯片

做在这个板子上

把它所有可能用到的外设

和功能都引出来

那么这个板子相应而言

这个体积一般就不会太小

那么这样的板子

它会有很多的优点

比如它是官方的

它是很reliable很可信的

然后呢它是一个很好的测试系统

并且它的常见功能都完善的引出了

更重要的是你在这个板子上可以

尝试一个芯片

是否合适或者很轻松搭建测试电路

尝试你想要的一个功能是否能够调通

而当你调通你要做产品设计

或者自己的科创设计的时候呢

你可以从官方的

资料上把这一部分电路给扣出来

加以学习

所以EVB板是个非常好的工具

那么作为我们初学者

EVB板有时候可能会很贵

有时候会很大

更重要的是

它有时候可能不方便灵活的调试

那么在我们嵌入式开发里头

经常还会有一类概念

就是我们有时候叫Startup Board

有时也会叫Minimum System最小系统板

那么一个嵌入式系统

我们之前学过微处理器

微控制器

麻雀虽小 五腑俱全

它是一个微型的计算机系统

所以它只需要非常少的外围器件

就能够工作起来

比如一个微处理器

或者一个微控制器

片内有存储器

有时钟 有电源调理 有外设

那么我们在编程开发起来的时候

我们只用给它设计一个最小的外围电路

比如说外围的电压接口

通讯接口

编程调试接口

特别是晶振这个时钟接口

这样一些接口以后

我们把它所有没有用到的外设和IO

都以标准的接插件

双排针

或者双排座引出来

这样就会构成了一个

体积非常小巧非常灵活的

最小系统板

比如说大家可以注意看到的

像我们8位的16位的

XS128在第二届到第四届

的智能车比赛广泛使用

再比如说这个ARM

Cortex M4

Cortex M0

甚至乃至power pc

这样的32位核

都可以开发出最小系统板

那么这样的板子它实际上是刚才我们提到的

EVB的一个高度凝炼只保留了它当中

最核心的一部分系统

那么它的好处就是

一旦你学习使用的时候

你只用关注这个最小部分

而需要拓展你额外功能的时候

你可以非常自由地给它设计一个外围电路

那么你只需要把这块板

扣在你设计的外围电路上

自行设计周边的部分

就可以调通你要的功能

而外围电路的设计

如果出现了偏差

你只需要去更改底下的设计

而不用担心核心系统对于初学者来讲可能很难

它的设计是否有问题

而一旦你的设计最终定型

你只需要把这部分电路

拷贝给 down到你的底板上

你的一个完整系统

就设计完成了

所以说这样的最小系统板

它能够提供一个可靠的适合初学者上手的Minimum System

大家可以放心大胆的

去调外围电路

即使你的外围电路画得很失败

把这个核心板烧了

因为它是分离的设计

你只要把它扣下来换一块就可以

继续学习和调试

成本也非常的低

那么在我们这个课程里头

从第一节课我们就讲过

我们有一个开源的这样一个硬件教学系统

它的图纸资料在网上都可以找着

然后愿意的同学

也可以通过淘宝很容易买得到它的成品的套件

那么它的背面如果大家看

就是一个mini的最小系统板

而它的主板

和它前面的屏幕就是它的一个扩展电路

所以我们这门课程呢

把一些好玩的功能

都聚集在了这个系统板上

这么一个Blazar系统上

但是实际上

我很希望大家通过我们后面第五章

乃至第四章IO这些模块的学习

具备更多的十八般武艺

你会点灯

你会放音乐

你会用显示屏

最后把它很酷很炫的玩儿起来

乃至用它的Arduino这个接口

去扩展各种各样的功能

但是最终大家具备

把这个最小系统拎出来

自己设计系统的能力

那么以上的这一些就我们在嵌入式开发里头

会接触到你要学习嵌入式系统

你一定要有个芯片

但一个裸芯片大家没法玩儿

一定会有一个平台一个板

那么各种各样的板

大概就这么一些名词的概念

那么作为开发的软件就是另外一件事儿

我们往往会听到两个词汇

一个叫做IDE集成开发环境

另外一个呢

就是Tool Chain我们称为工具链

实际上我们写了一个程序

就像我们上节课所学

要把灯点起来

我们写了个main函数

几句话C语言

那么下来以后

变成一个我们微处理器

可以使用的程序

那么这个过程当中我们需要若干个步骤的

软件开发工具

那么对于任何一个微处理器

内核是不一样的

都有不同的指令集

都有不同的寄存器组

都有不同的内存映射

那么我们想想刚才讲的这些东西

在第一章的时候讲它是什么

它是我们不同型号微处理器的编程模型

所以这样一种编程模型的不同

就会要求它需要不同的开发工具

所以我们熟悉计算机开发的同学

会觉得我们或者用GCC

或者用Visual C

或者用Turbo C就在计算机上

就可以写我们的程序了

而嵌入式开发的环境里头

我们如果使用的是

比如说不同厂商不同内核的嵌入式微处理器

我们可能会使用不同的开发工具链

而如果使用的都是ARM

比如说我们现在学的是

Freescale或者是NXP的ARM

Cortex这样的核

那么它很有可能它的工具链与意法

比如说ST

比如TI的

ARM的微处理器是通用的

但它仍然是一个独特的

适用ARM的工具链

那么这样一个工作链的构成

大概需要最少以下几个部件

我们需要一个汇编器

它具备把我们写出来的汇编代码一一对应

具有映射关系的变成机器码的

这样一种汇编能力 我们会需要一个编译器

本门课程不会去学编译器原理这些知识

但是我们知道编译器能够帮助我们

解析高级语言

包括C语言这样的语法

把它进行语素上和逻辑上的拆解

最后翻译成中间语言或者变成这个汇编语言

那么编译器根据设计思想的不同

它有可能最终直接变成机器码

也可能变成别的中间码

但是现代的绝大多数编译器

它会选择

以对应这个CPU的汇编码作为它的中间步骤

所以我们可以理解编译器变成汇编码

汇编器再进一步把它变成机器码

然后最后我们还会有一个linker叫链接器

它会把我们编译的绝对地址定位的代码段

也就是目标代码根据我们的内存的地址映射

哪些地址段是代码 哪些地址段是内存

把它像乐高玩具一样组装起来

最终形成一个可执行的

可以互相调用的

完整的程序

最后呢偶尔会用到

大家可能感觉不深的是Disassembler反汇编

我们拿到一段机器码

想知道它的对应的含义是什么

读0和1的机器码是很难的

反汇编可以帮我们

把它反向变成汇编代码

然后有经验的程序员可以加以阅读

了解程序的构架

那么很多同学会说

那老师我C语言其实我也学过呀

我写了个main函数

我一点

按F5或者按F9

它就开始运行了

我说printf我就看到结果了

我没有感觉到这些步骤啊

那么这些步骤

背后的故事在下一个小节

我们会试着给大家来加以展开

但是呢

这些步骤确实大家感觉不到的原因

从软件的角度有两个

一个呢在LINUX平台

或者在一些工具链

Tool Chain的平台里头

我们会用很多的脚本工具

让它进行一些自动的连续调用

直接得到最终的目标码

那么这样子依赖脚本编写对于入学者

或者WINDOWS平台上大家可能会不习惯

那么我们更多会使用的东西叫做

Integrated Develop Environment也就是IDE

那么IDE是一个集成开发环境

一说好像很高大上

我举几个例子

比如说非常有名的Visual C++

它就是一个很典型的IDE环境

在这个里头它后台集成了通过

其实也是脚本驱动下对于汇编

编译 链接

这些步骤地调用

但是我们在它的界面里

写好一个main函数以后

你只用点一下它的按键

程序就运行起来了

那与之类似的

在我们学习使用NXP公司或者是Freescale公司

这些ARM

Cortex器件的时候

我们也有很多集成开发环境可以用

比如说著名的KEIL还有IAR这样的开发环境

包括NXP公司原来独立的一个产品

叫CodeWarrior

CodeWarrior这个开发工具

它适用了很多很多的嵌入式平台

可能很多微处理器大家不熟

我说两个大家熟的

比如最早的任天堂的N64的游戏机

包括Play Station游戏机的开发环境

它的集成都是用的CodeWarrior

来作为集成开发环境

那么这样的集成开放环境

把这些工具整合起来

就构成了我们的一个开发平台

那么除了集成开发环境呢

在我们一点鼠标或者点一下以后

我们去CodeWarrior上面小甲壳虫

这么一个简单操作的背后

有一些是我们学习课程一定要知道的故事

有一个概念就是交叉编译

那么交叉编译这个词

就是Cross Compiler那么这个词

在我们很多时候

我们自己并不觉得

我们做过很多计算机的开发

都是在个人电脑上写一个程序

编译生成一个个人电脑上可以使用的软件

那么这种都是普通的编译

交叉编译是什么

我们看看维基百科上的解释

说它是

在某个系统平台下产生另一个系统平台的

可执行文件的这样一种编译器

这句话我觉得不用太多解释

因为它还是挺直白的

对吧

一个平台产生另一个平台的

那什么时候

需要使用交叉编译

为什么讲嵌入开发的时候要说交叉编译呢

看看维基百科上另外一句解释

它也很直白

它说在对象平台

难以或者不容易进行编译和编程时

我们需要交叉编译

这个大家很好想象

我们现在已经有个概念了

说我们的微控制器是个黑黑的小方块儿

有一对银色的腿是芯片

即使做在电路板上

也就是一个巴掌大的小板子

那么没有进行编程的时候

它既没有键盘

也没有显示器

我们怎么让它给自己编程呢

所以绝大多数的嵌入式开发

都是使用计算机的平台来进行编程

最终得到在我们的嵌入式平台上

可以使用的这样一种程序

那么这就是交叉编译的环境

那么我们必须建立的一个概念

是在计算机体系从第一章第二章

我就一直给大家建立的概念

也就是计算机程序就是指令的集合

而指令的依据也就是这个计算机的体系结构

不同的CPU有不同的指令集

不同的寄存器组

所以它们的机器码

它们的程序是不可以通用的

所以呢

我们所谓的非交叉的编译

是在本平台编译

生成本平台可以使用的执行文件

而我们一旦

进入了嵌入式开发领域大家

此执行文件非彼执行文件

会建立个概念

写的c语言得到了一个可执行文件

点个灯

这个程序并不能在你的计算机上使用

而是必须烧写到我们的微控制器对应的

正确的型号里才能加以使用

这个系列这个型号

都是唯一

都是关键的

那么这样一种交叉编译的环境

就决定了我们的开发方式

一定是在计算机上

编程 编译 甚至汇编

得到链接 可执行文件

最终要想办法

把它放到我们的嵌入式平台里去执行

那么这样一个环节

就决定了我们的工具链

又比普通的方式要更加麻烦

那么下一个要引入的东西呢

就是Simulator

或者Emulator

如果大家看看这两张图

你们很多同学

年轻人就会觉得很兴奋

啊这个我熟

为什么呢Emulator大家很熟悉呀

不就是模拟器吗

特别是大家最熟悉的模拟器

不外乎两种 就是图上的

一个是我Emulator出来一个这个

游戏机 任天堂 我就可以玩超级玛丽

可以玩魂斗罗 或者呢就是说

有同学我喜欢做手机app

这个app写完了

甚至我见过有些同学非常 叫非常穷

非常囊中羞涩

我写的程序我都买不起很好的手机验证

怎么办呢

很多开发环境会提供一个这个

Emulator的平台

我可以把我的程序放在iPhone

或者放在Android的平台上去试运行

看看效果是怎么样

那么这些东西我们称为

Emulator

那么实际上

更加底层的本质是

因为我们的目标是一个嵌入式平台

它的CPU它的指令集与我们计算机是不一样的

那么我们在做纯软件和算法的验证的时候

甚至乃至一些硬件验证的时候

有些时候

可以借助Emulator

也就是你完全通过C语言

通过计算机的编程语言

写出一个虚拟的CPU的构架

完成它所有指令的功能解析

甚至完成它所有对于存储和外设的调用

最高阶的时候

把它的声光电这些外设的功能

也全部与电脑链接起来加以实现

于是我就可以让我们的程序

误以为自己在一个硬件的平台上跑

这样一种概念大约是在过去十五年里

慢慢出现的

因为从那个时候起

计算机才有足够的计算能力

完整的虚拟出

一台别的硬件平台

但是这种概念一旦产生

就一发不可收拾

最早大家就像现在这样玩游戏

后来做做嵌入式的手机开发

那么到今天

我们会发现有VMware 有Visual PC

甚至包括有大型的虚拟服务器

先在一个硬件平台上

虚拟出若干个硬件平台

再运行服务使整个服务变得更加鲁棒(Robust)

那么放在嵌入式的环境里头

我们在很多开发工具链里头

也能看到Emulator Simulator

它会方便我们的硬件工程师和软件工程师

分头干活

甚至在智能车比赛的环节里

有的同学说我做了个很酷很炫的算法

可是我的伙伴不给力

硬件老出不来

其实你可以尝试把你的算法在模拟平台上

先跑一跑

那么除了模拟平台

我们还有个很tricky的事情

非常挠头的事情

就是写好的程序

如何才能放到我们的芯片里

或者说

如何才知道我们的程序在电路里

在这样一个硬件平台上也能工作正常

这是嵌入式开发的要点

软硬件协同

不是说软件跑好了就一定好了

那么老式的开发往往会使用一种

叫做仿真器的概念

仿真器一般

我们有时候也会把它称为Simulator

那么它的最基本概念就是

嵌入式处理器是很贵的

而且编写程序烧写程序

在早期要借助高压或者紫外灯

是非常麻烦的事

甚至只能一次烧写

那么聪明的人类

我们的前辈们想了一个什么办法呢

就是我做一个极其复杂的电路

这个电路

它的引脚跟芯片

跟我最终要用的微处理器

是一模一样的

这个电路背后

有一堆程序的支持

最后连在电脑上

电脑写好的程序发给这个电路

这个电路

对于外围的引脚

可以模拟得像一个微处理器

像一个芯片一样工作

把程序的

对外的电路反应给体现出来

然后如果这种方式

工作正常了

ok那这个程序就没有问题

我再把这个程序一次性的烧写到芯片上

再把芯片插接或者焊接到电路板上

那么这个程序就应该可以工作了

那么发展到今天这样一种思路已经逐渐过时了

因为很显然这样的编程

这样的仿真模式

你每一个专用器件

对应每一个专用的芯片

它都要专门的设计

每个都不一样

而且随着芯片的密度越来越高

封装越来越追求集成度

它也越来越难以制作

和成本昂贵

而且最重要的是

你在一个模拟的电路上调整你的程序

它的电学特性

特别是现在这么高性能

百兆赫兹的嵌入式系统

它的时序特性很难做到完全一样

那么当代的嵌入式开发方法逐渐走到了什么呢

走到了在线开发

也就是在芯片设计的时候

内部留下了一个符合某种工业标准的

编程调试模块

它可以有序地在后台

向我们的程序流水中打入一些调序时序

来获得寄存器的值

来打断CPU的执行

并且把这些信息用非常小的通讯

非常快的速度

传给我的上位机

那么我们会使用串口

或者使用USB来用这个调试接口加以连接

这个时候我们所说的这个调试器

不是大家看到的C51

或者很多老的书里头所说的

那个仿真器

它确确实实就是个debugger

是个调试器

那么这样的通讯接口有很多种标准

比如摩托罗拉时代一直下来的

Background Debugging Mode

BDM标准

比如很著名的工业标准

IEEE (I triple-E)的JTAG标准

它用五根线 十根线

然后比如说我们现在在

ARM Cortex的

这样一种微处理器结构里

用的很广的SWD的标准

那么在我们学习的范畴里

不管这是哪种标准

大家都记住

它只是使用一根两根或者五根

有限的通讯线非常高效的与CPU

与我们的微处理器内置的调试模块接口

进行通讯

然后获得和发送我们调试所需的信息

和控制信息它只是一个通信协议

那么这些接口之间的比较非常的多

我这里举了个例子

是TI公司发布的

一个标准文档

那么现在的像SWD

这样的调试接口

它虽然跟原来传统的JTAG

比从五根调试引脚的需求

变成了只要两个引脚

但是它的速度比原来快了一倍都不止

那么这就是调试技术的发展

那么今天我们用的微处理器都非常小

引脚数都非常有限

所以绝大数ARM Cortex

处理器都使用的是SWD的调试接口

也就是我们现在所常用的调试器

所选用的通信协议

那么通讯协议是一件事儿

我们想把程序真正烧到这个芯片里

要用什么呢

很多同学知其然不知其所以然

说我在淘宝上

买一个USBDM或者买个OSBDM

那么所有的所说的USBDM

或者OSBDM

乃至后面会说现在更流行的OpenSDA

它都是调试器

它在底层会使用刚才所说的

BDM或者JTAG或者是SWD这些通讯协议

那么最典型的像USBDM

是一个开源的硬件项目

那么它主要采用的是BDM通讯协议

或者SWD的通信协议

它的优点是广泛支持

从摩托罗拉Freescale

一直到现在NXP下来的各种产品线

包括8位的08的核

16位的12的核

ColdFire 32位的核

乃至现在SWD接口的

ARM Cortex M4 M0各种系列的MCU

能够很好的通过它这个标准10Pin口进行兼容

那么USBDM的制作

我这里就不展开讲了

不在本门课的范畴

大家在网上能找它的

所有开源硬件资料

然后呢也能在淘宝上

很容易买到廉价的调试器

那么它是个非常好的工具

能够CodeWarrior

做很好的链接

那么现在

更常用的一个开发工具呢

是OpenSDA

OpenSDA分为V1

V2甚至V2.1

V1是一个闭源的调试工具

我们现在所常用的

大家网上说的开源的OpenSDA

主要指的它的V2

V2开始它的代码彻底公开

它的构架呢

就如这个上图所示

在一个K20的标准MCU里头

用它来做一个调试器

程序分成两个部分

标准动作的是一个BootLoader

可以使这个调试器变成了一个

能够驱动一个SWD调试接口的小底层

以及一个具有USB的存储器的一个

底层的这个BooLoader

那么在上层

我们可以给它放一个Application应用程序

放在这个调试器里头

因为这种灵活的构架

大家可以看到下面这张表

我们常见的包括USBDM

包括P&E的调制器

也包括大家很喜欢用Jlink

乃至OpenSDA这个开源项目

自己所带来的SWD的这个调试模块

都是它的应用程序之一

我们把哪种固件

放在它的里头

它就可以当那种调试器用

在我们开发工具里可以装对应的驱动

所以它非常的灵活

你拥用一个OpenSDA

你希望它是Jlink

希望它是USBDM都是可以的

那么我用这张表中

我自己尝试的这些黑点标出了

它与不同开发工具的普适性和适用性

那么大家可以看到比如Jlink是最通用的

但是最后一列我也告诉大家

这当中哪些项目是开源的

哪些项目是免费使用但不开源的

或者哪些项目是可以商业使用

哪些项目是不能商业使用

大家可以了解它的知识产权信息

那么有了这样的各种各样的调试器

我们虽然还没有特别贯通开发的方法

我们大概有了个概念

我们可以写C程序

用工具链编译得到目标代码

然后我们需要交叉编译得到我们所用的

那个CPU上的程序

然后我们再通过一些仿真器

可以验证它的运行

然后我们通过调试器

可以把程序以某种方式某种通讯协议

放到我们的芯片里

让它去执行

那最后还有一类工具呢

是批量的编程烧写工具

Programmer或者Burner

它的特点是我们可以把编好的

某一个程序放在它里头

然后批量的更换芯片

几十片几百片的烧写程序

这在很多产品的量产里曾经非常的火爆

非常的常用

但是现在它的使用越来越少 为什么

因为在线开发工具实在太方便太便宜了

所以呢这是一类工具

所以我们要学习一个嵌入式

我们就需要拥有一个自己的工具链

那么所幸的是在今天的门槛越来越低的情况下

当然我拉了一张表

我们可以自己掰着数一数

我们需要一个开发工具链

我们在网上可以找到特殊版本的CodeWarrior

IAR或者是KEIL 能够免费的使用这些开发工具

我们需要一个调试器

然后我在网上可以找到

开源的USBDM

也可以找到开源的OpenSDA

而且它们在淘宝上都能买到非常便宜的

然后我们需要一个调试电路板

那么在学习本门课程的时候

有兴趣的同学

你可以只学习知识

找出你手头任何一个方便的

开发板来调试

也可以获取我们在网上Blazar

这样一个教学系统资料

然后自己做一个板子

或者在淘宝上非常便宜的买到已经制成的

这样的板子来进行调试

那么把调试器

程序都具备

万事俱备

那就只欠能力了

我们就可以开始尝试动手

真正把它玩儿起来

那么这节课给大家讲的呢

就是我们做这样一个

ARM Cortex M0+的嵌入式开发

所需要的一些工具链

以及它在嵌入式开发这个行当里我们常听的词汇

和基本概念

那么这节课就到这结束

下节课我会给大家介绍

我们的编译开发背后的知识

智能车制作:嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--Video

-1.2 进入嵌入式系统的世界

--Video

-1.3 如何学好嵌入式系统

--Video

第二章 绪论

-2.1 计算机的基本概念、发展历史

--Video

-2.2 从晶体管到CPU

--Video

-2.3 概念CPU、微控制器MCU和嵌入式系统

--Video

-2.4 八卦计算机史

--Video

-2.5 不同领域、不同系列的嵌入式系统

--Video

-2.6 ARM历史与MKL25Z128 MCU

--Video

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--Video

-3.2.1 堆栈的概念

--Video

-3.2.2 堆栈的概念-头脑体操

--Video

-3.3.1 ARM的体系结构

--Video

-3.3.2 ARM的体系结构-头脑体操

--Video

-3.4 中断的概念和机制

--Video

-3.5 中断子程的概念和编程

--Video

-3.6 复位、时钟、存储器和总线

--Video

-3.7 小结:MCU的总体结构和程序运行机制

--Video

第四章 MCU外设与开发

-4.1 第一种外设:IO

--Video

-4.2 IO外设的编程实操-点亮LED

--Video

-4.3 IO外设的进阶知识

--Video

-4.4 嵌入式开发的基本概念与工具链

--Video

-4.5 嵌入式开发的进阶知识

--Video

-4.6 嵌入式开发中的C语言(上)

--Video

-4.7 嵌入式开发中的C语言(下)

--Video

-E0.1 实验零 开发板的初步认识与工具链的安装

--Video

-E0.2 实验零 体验一个例程的编译与下载

--Video

-E0.3 实验零 编写第一个程序:点亮核心板LED

--Video

-E1 实验一 点灯秘籍

--Video

第五章 MCU与嵌入式系统设计

-5 智能车视角的嵌入式设计

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。