当前课程知识点:智能车制作:嵌入式系统 >  第四章 MCU外设与开发 >  E0.3 实验零 编写第一个程序:点亮核心板LED >  Video

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

Video在线视频

Video

下一节:Video

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

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

那么在这个单元的第二个任务呢

就是带着大家进行CodeWarrior

新建一个project的使用

我来领着大家新建一个project

完成自己开发的一个小程序

完成一个小小的任务

这个任务是什么呢

就是把我们板子上的一个小灯点亮

在我们这样一个开发板的正面

有大量的显示屏按键和外设

如果大家把它翻过来

会发现在我们的核心小板上也有一个小小的LED

是可以被IO控制点亮的

所以与我们讲的第一类外设关联在第零次实验里

我们写一个非常简单的程序来点亮这盏小灯

让它闪烁起来吧

那么要写这样一个程序

我首先会给大家一个delay函数

那么这个delay函数

就像我之前所说是一个60000次的for循环的延时

它大约会浪费掉半秒钟的时间

执行一个null的空操作

那么有了这样一个delay函数

如果我们要通过这样一个引脚

把这样一个灯点亮

需要哪些信息呢

我在这里作为第零次实验直接告诉大家

那么这样一个灯

它的阳极通过电阻上拉接了3.3伏

阴极接的是LEDtest这样一个引脚

那么这个引脚

实际上是我们微控制器的PTB0这个引脚

也就是portB的第0个引脚

那么根据我们在课上所学过的

关于IO的内容和提示

我们是不是可以简化在上课环节

给大家讲过的代码

我们启动模块的时钟把引脚指定为IO用

初始化IO的方向和初值

然后再for循环里delay

定一个时间改一改IO的值

使我们的小灯亮灭亮灭的闪烁起来

所以作为第零次实验

我把这个代码给出来

大家参照这样一个代码

就是我们的第一次的小程序

那么它的含义可以简单的给大家过一下

就分别是打开时钟

指定引脚给IO用 指定引脚的输出

并且指定引脚的初值

在for循环里通过半秒的延时

然后使引脚的值进行翻转

那么我们新建一个project

把这样一段代码给敲进去吧

那么回到CodeWarrior

当我们要新建一个project的时候

我们在Work space里

原来已经有一个project是没有关系的

每一个工作区域可以有多个project独立的运行

所以我们点择files的菜单

第一项new

我们会发现new菜单

可以弹出新建的东西有很多种

我们选其中第三个也就是Bareboard project

称为裸板程序

换言之我们这是一个微控制器的开发板

上面并没有任何的操作系统

那么在弹出的step by step对话框

会帮助我们一步一步的建立起一个新的工程文件

那么第一框请给我们新建的工程文件取一个名字

也就是我们这个project的名字

大家仍然注意不要出现中文字符

尽量没有空格

那么我给他起的名字是叫coreboardLED

也就是我们核心板上的LED的闪烁

这么一个test的工程文件

那么大家会发现在这个标灰的区域里

自动在我们的Workspace

也就是ming_workspace这个目录里

自动计划要新建一个跟它同名的子目录

来保存新建project的所有代码

我们点next

第二个步骤是选择我们所使用的微控制器的型号

大家会发现对话框里已经有若干个微控制器系列

一定要记住我们所使用的是kinetis L系列

KL25Z128

我们一步一步选到正确的型号

下面两个选项是告诉我们

要新建的是一个库文件

还是个可直接执行的用户程序

当然是用户程序

所以我们不对它做修改 点next

下面一个步骤是询问我们

将要使用什么样的调试工具来调试我们这块板

或者说我们用什么样的调试工具

把程序下载到这个板子里

那么大家有的同学可能用过USBDM

或者用别的开发工具

那么在现在这个课的范畴里

我们是使用一个定制成了JLINK调试器的

OpenSDA工具

所以我们把JLINK前打上勾

把其他选项空着就可以了

然后点next

这一个页面分别是提示询问是使用什么样的语言

比如我们使用默认的C语言

是否要浮点运算

我们使用默认用软件模拟浮点运算

然后IO 也就是通讯使用什么

我建议大家改成NO IO

因为我们在后面的课程里

要自己学会编写UART的通讯

然后编译器使用GCC编译器

然后点next

注意在这个页面我们只改了一项

我们把IO改成了NO IO

然后再下面一个界面是

是否使用processor expert

processor expert可以帮我们

自动根据需要生成一部分源代码

而作为初学者我们要

一个螺丝钉一个螺丝钉的

掌握编程的技巧

我们选择none自己来写所有的代码

然后点finish完成了整个step by step的wizard

那么我们可以新建一个新的project

那么我们会发现在左边的project区域

已经多了一个project

除了刚才的Blazar test导入的工程之外

多了一个新的project

这个project就叫

我们起的名字coreLEDtest

同样它会有我们指定的单片机型号

所对应的头文件

它会有我们头文件型号所对应的装配文件

和起始代码

这都是CodeWarrior帮我们生成的

所以大家深有体会的是

CodeWarrior帮我们在指定型号的情况下

做完了所有的事情

给了我们什么呢

给了我们一个熟悉的source code里头的main函数

如果我们把它点开

大家会发现这是所有熟悉C语言开发的同学

最喜欢的东西

因为它是一个空的main函数

里头什么都没有

那么我们就尝试着把我们刚才想做的

点亮一个核心LED灯的代码给敲进来吧

那么在老师这里

我们从老师的课件里把这个代码复制过来

我们希望所有的同学

你能够自己逐字逐句的去敲这个代码

一方面是确认你对每一个符号

每一个含义是理解的

另外一方面我是希望大家在这个过程当中

真正能够理解我们所写过的每一个语句的含义

而不仅仅是复制和粘贴

那么为了节约时间

我们将代码复制到工程文件区域里

这个时候我们进行一次编译

同样点左上角的锤子

这个时候进度条告诉我们

它正在build整个project

然后我们看到在右下角

弹出了一个错误信息是error

那么这个错误信息我是故意的

我们把它点开

看看它的错误信息提示是什么

如果大家仔细阅读会发现

最后说unknown type name ‘Int’

说这个字不对

我们仔细看一看标错的位置

我们main函数的类型写成了大写字母的Int

所以我们在编译的环节会告诉我们哪里有错误

我们把它改正过来

然后再点一次锤子进行build

那么这样一个流程

就是对代码进行查错的流程

完成之后我们会发现

这一次的build没有报任何错误

那么我们可以开始进行程序项目的

微控制器的烧写

也就是点甲壳虫图标

那么右下角在走进度条

然后再次看到了调试器的提示信息

我们点accept确认

然后进度条走完后

我们刚刚写的第一个

自己编写的小程序

就已经成功的烧写到了我们的微控制器里

那么这一次我不再直接点运行

而是到左边中间这个区域这个窗口

看一看我们烧写进去的代码

然后我们会发现这个代码

已经停在了 main函数的第一条指令

与之对应的在右边的区域里这些C语言代码

对应的汇编指令也标识了出来

那么我们在对话框里

大家可以看这个运行停止的区域右边

有若干个图标

分别是step into和step over

这是单步执行

所以我们可以一步一步执行我们的C语言代码

来进行程序的调试

那么相关更多的技巧

大家在日后可以慢慢自己再体会

我在这里带着大家做几步

然后我们会发现我们非常强大的这个开发工具

和调试器可以带领我们逐句执行我们的C语言

那么在程序调试中

我们可以看到每一句话执行之后的效果

同时有条件同学可以在右边右上角

找到对应的变量名和寄存器的地址

来查看它是否真的发生了变化

那么为了节约时间我剩下的步骤直接点运行

看看程序运行的最终效果

我们这个实验内容

所使用的LED

在我们单片机微控制器的核心小板上

也就是在我们开发板的背面我们把它翻过来

我们会发现在这样一个开发板的背面

有两个LED

红色的LED是我们的电源灯

另外一个LED是我们可以用IO控制的信号灯

那么如果我们点击

我们开发界面里头的运行按纽

我们会发现大约以半秒钟的时间间隔

我们的绿灯成功的闪烁了起来

于是我们自己编写的第一个程序

也就在这个芯片里成功的运行了

那么现在这个程序是

烧写在这个微控制器的flash里头的

也就是掉电不丢失

那么作为验证

我们可以把我们的这个板子的调试器接口断开

然后在完全断电的情况下重新上电

这个时候会发现

我们程序直接进入了小灯闪烁的模式

换言之我们为这样一块开发板

写好一个烧写在里头上电

就自动可以运行的程序

那么在接下来的实验当中

我会带着大家一点点往下玩

把这个板子上所有的功能都给用起来

好 正如大家所看到的

我们从电路原理图上看到有这么一个LED

接在了一个引脚上

通过自己新建一个project

敲打最最简短的一段程序

成功把这样一个小灯点亮了

我们也就完成了我们自己在CodeWarrior

动手编写的第一个程序的烧写和下载

也就是第一次真真正正地

把这个板子的硬件给玩起来了

怎么样

大家觉得容易吗

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

第一章 概览

-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笔记与讨论

也许你还感兴趣的课程:

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