当前课程知识点:智能车制作:嵌入式系统 > 第四章 MCU外设与开发 > E0.3 实验零 编写第一个程序:点亮核心板LED > 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
-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
-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
-5 智能车视角的嵌入式设计
--Video