本帖最后由 飞狼老大 于 2016-6-6 17:19 编辑
第四课 用KDS点亮一个LED Kinetis 拥有非常方便的开发环境(IDE),官方的Kinetis Design Studio(KDS),CodeWarrior都是比较好的开发工具,另外还有MDK,IAR等也支持全系列的Kinetis开发,由于CodeWarrior Kinetis与KDS都是基于Eclipse,而KDS是NXP针对Kinetis新推出全平面开发工具,支持windows、linux、OSX,以后会有比较好的官方支持,所以后面我将陆续以KDS,MDK,IAR三种具有代表性的工具进行开发。 开始实际操作之前,我们先一起理清什么什么是SDK,什么是IDE,对于以前接过软件的同学应该很清楚,而对于并课程所针对的零基础就难以清楚了,SDK是Software Development Kit的缩写,其实说白点就是就是一方便开发用的软件工具,用来减少你操作MCU的工作量,比如原来你需要一个一个的寄存器去操作来达到硬件输出输入,SDK一般就把这个经常用到的功能打包成一个函数,现在只需要调用这个函数接口,就能直接等于操作了这些寄存器,从而更快的达到目的,当然SDK还有更多东西,比如一些例子(demo),让你更加清楚怎么使用这些接口,有的sdk也会很详细的说明各种API用法。IDE是什么,他就是一个软件开发环境,把写代码的工具,编译工具,还有调试工具等放在一起,形成比较方便的开发流程。这些也不用太深纠,知道有那么回事就行了,主要是方便以后下软件知道要下什么。Kinetis系列官方提供了Kinetis SDK简称KSDK,但是支持也不是所有的Kinetis,比如KE系统就需下载独立的例程包。 下面开始点亮一个LED,从零开始当然先选用最简单的点灯方法,那就是使用KDS自带的PE工具,去NXP下载好KDS,安装后就会有了。如果找不到就直接到NXP社区下吧!社区也提供下载的。 先打开KDS,点file,newproject,,选Process Expert(简称PE),下的的kinetis SDK **or Process Expert Project 取个名字,随便取个名字,这边就取test,然后location 可以选择存放在你想存放的地方这边我就用默认的路径,第一打开KDS的时候会让你设置一个默认路径,接着一下步会让你选择Boards 与Processors 这就需要看你用的什么板子,如果官方板,就可以直接点boards里面选取你所使用的板子(目前也存在一些板子里面不显示,不纠结如果里面没有你所用的板子,那就选下面的。),但是如你用的第三方板子,就需要选择Processors了,选择你板你子所用的处理器所在的系列,可以一直打开到你的型号,但是要注意,型中的XX表示的是封装,不同的封装使用方法是一样的,所以工具里面就不写得那么细了。接着下一步会先你选择应用开发工具,会有KSDK与PE,我们本次选PE工具进行,然后PE下面会有两start with perspective designed for ,第一个选项的意思就是选择硬件配置,就是先进行硬件配置,对所用的所有引脚先配置好用途,然后初始化。本次只是点一个LED就不用这么复杂,如果是做工程的时候就需要先配置好各个引脚的功能与用途,我们本次选择UseCurrent Perpective,使用当前的就行了,另外还有一个project mode 这个下面也说说明选择两个选择的时候有说明,一个是linked 一个是独立的,链模式的头文件与C文件会与库里面的共用,所以如果修改这些文件会对以使用或是其它linked的工程有影响,如果是高手能做到修改这些文件使之能个性化更方便自己以后各种工程使用,那就选用linked的,否则就选独立模式,这个模式会新建文件夹把所需要用到的文件复制一份出来供本工程使用,修改不会对其它工程造成影响。咱就不玩大的了,先用Standalone,接着下一步,会让你选择编译工具,如果你用别的编译器如mdk或IAR就选mdk或IAR,不过咱们先用GUN C Complier,因为KDS自带的就是这个,finish完成工程新建。 接下来可以看到一堆窗口,KDS真的不如IAR或是MDK简洁,各种窗口……。从工程浏览器可以看到里面有一个ProcessorExpert工具,点这个工具就会打开PE,当然,默认情况下,PE是已经打开了放在中间,PE工具由两大部分组成,一个是组件库,里面提供各种软件的组件,另一个叫component inspector,是组件配置工具(我翻译名称不一定准)反正就是用来配置组件的各种功能的。 到这个点上了,咱们先说说点亮一个LED的原理吧,使用功率很小的LED的时候,LED直接一角接电源正或负都行(LED也有正负极需要与之对应),另一脚接MCU一个引脚,只要把对应的MCU的引脚设为与LED另一引脚电平相反就能达到使LED正负两脚之间有电压差,形成电流点亮LED,当然这个电压差需要达到LED最小电压。一般通用做法是把LED正极通过限流电阻接电源,负极接MCU引脚,如果是功率大的LED需要使用三极管作为开关,通过MCU一脚控制三极管。我们这个电路图上面可以到LED是直接连的限流电阻接电源,负极接在PTB6,PTB7,PTB10三个引脚上面。低电平有效,也就是当MCU引脚为低电平时LED会亮起来。我们先点一个LED。从PE工具组件库中选择Kinetis,选择外设驱动(peripheral drivers),找到输入输出(inputs/outputs)选择位IO(BitIO),双击就会添加到组件中去components,从组件窗可以看到一个bit1:bitIO,双击就可以辑我们选定的这个组件了。由于新添加的组件并没有配置,所以一般会报错,可以看到上面一个小红叉,双击组件进入编辑,可以看到PE工具进入了component inspector,右上解有一个基本模式与高级模,基本模式比较简单就是名称什么的都会自动帮你命名好,但是这样有时候并不是特别利于理解,所以我们调到高极模式,可以看到已经可以部分灰色区选项变正常了,我component name里面输入LED1,然后在Pin for I/O里面选前面电路图上查到的LED这里写PTB6,可以下拉选择也可以输入,输入时软会提示相匹配的结果,然后选择方向为输出,initialization里面把初始值输入为1,因为我们需要让其点亮,然后点击methods,可以看里面有很多设置,这些都是操作一个位IO所涉及到的方式,其中每一个择项大致对应到一个寄存器,我们需要点亮LED也就是需要PTB6输出为低电平,前面已经设置其初始化为高电平了,所以这里我们这里几种方式实现,一个是翻转电平,一个是直接设置电平,还可以是清除其高电平。都可以使用他电平由高到低,从而从LED点亮,本次就使用翻转,选择里面的NegVal (取反)把后面的don’t generate code 改成generate code。然后打开components里面的LED1可以看里面生有一列与刚才选项对应的组件,其实就是刚才对应的设置里面每种操作对应的函数,接下来我们从工程浏览器里面sources里面打开main文件,向下拉到,找到main(){ }找到for(;;){ } 这是一个死循环,里面没有内容也就是无条件的在里面空转,我们直接把NegVal,拖入到for的前面。如果拖入到for后面的{}里面也是一样的,但是亮度会降低一点。然点击锤子,进行编译,编译通过后,点小甲壳虫,进入debug,如果提示你没有配置调试工具,点小甲壳虫边向下的箭头呼出菜单,选择debugconfigurations,选择你所用的开发板上面的调试工具,一般ARM尽量使用Jlink,教程比较比也比较方便,双击GDB DEGGER JlinkDebugging,会新建一个调式配置,一般默认就行了,如果debug存在问题,可以参考一下图片下的内容,特别注意interface,如果你的板使用是JTAG,就稳定JTAG,如果是SWD就选SWD,现在一般就是SWD。设置好的点下面的debug进行调试,点击中左上侧菜单里面的向右的三角形图标开始运行,这时可以看到板子上的LED亮了起来,另外针对前面说的拖入到for前面与后面的大括号里面说明一下,拖入到前点开发板只会点亮灯一次,然后就一直空循运转,所以一直是亮的,而拖放到后面的大括号里面,MCU会不停的开关LED,由于开关的频率过高,人眼无法观测到LED灯的亮灭,但是亮度会比前面暗一点,这对于不同的LED会有一些差异,有的LED对电流特别敏感,会比较明显,有的LED会不那么明显。
|