飞思卡尔DG128_PE编程入门教程

合集下载

飞思卡尔DG128相关例程及资料

飞思卡尔DG128相关例程及资料
Once everything is working as expected, you can begin adding your own code
to the project. Keep in mind that we provide this as an example of how to
get up and running quickly with CodeWarrior. There are certainly other
files
//------------------------------------------------------------------------
// Adding your own code
//------------------------------------------------------------------------
the application. The menu Run > Halt or F6 stops the application.
In the debugger menu Component > Open you can load additional components.
//------------------------------------------------------------------------
- the linker .prm file
- Linker Map: the .map file generated by the linker
- Libraries: needed library files (ANSI, derivative header/implementation files)

飞思卡尔16位单片机9S12XS128使用和程序

飞思卡尔16位单片机9S12XS128使用和程序

飞思卡尔16位单片机9S12XS128使用收藏最近做一个关于飞思卡尔16位单片机9S12XS128MAA的项目,以前未做过单片机,故做此项目颇有些感触。

现记录下这个艰辛历程。

以前一直是做软件方面的工作,很少接触硬件,感觉搞硬件的人很高深,现在接触了点硬件发现,与其说使用java,C#等语言写程序是搭积木,不如说搞硬件芯片搭接的更像是在搭积木(因为芯片是实实在在拿在手里的东西,而代码不是滴。

还有搞芯片内部电路的不在此列,这个我暂时还不熟悉)。

目前我们在做的这个模块,就是使用现有的很多芯片,然后根据其引脚定义,搭接出我们需要的功能PCB板,然后为其写程序。

废话不多说,进入正题。

单片机简介:9S12XS128MAA单片机是16位的单片机80个引脚,CPU是CPU12X,内部RAM 8KB,EEPROM:2KB,FLASH:128KB,外部晶振16M,通过内部PLL可得40M总线时钟。

9S12XS128MAA单片机拥有:CAN:1个,SCI:2个,SPI:1个,TIM:8个,PIT:4个,A/D:8个,PWM:8个下面介绍下我们项目用到的几个模块给出初始化代码1、时钟模块初始化单片机利用外部16M晶振,通过锁相环电路产生40M的总线时钟(9S12XS128系列标准为40M),初始化代码如下:view plaincopy to clipboardprint?/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}}/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}}上面的代码是汇编写的,这个因为汇编代码量比较少,所以用它写了,具体含义注释已经给出,主函数中调用此函数即可完成时钟初始化,总线时钟为40M.2、SCI模块初始化单片机电路做好了当然少不了和PC之间的通信,通信通过单片机串口SCI链接到PC 端的COM口上去。

飞思卡尔单片机快速上手指南说明书

飞思卡尔单片机快速上手指南说明书

Freescale Semiconductor, Inc.Document Number: 用户指南 Rev. 0, 09/2014Confidentiality statement, as appropriate to document/part status.___________________________________________________________________飞思卡尔单片机快速上手指南作者:飞思卡尔半导体IMM FAE 团队飞思卡尔半导体是全球领先的单片机供应商,其单片机产品包含多种内核,有数百个系列。

为支持用户使用这些产品,飞思卡尔提供了丰富的网站资源、文档及软硬件工具,另外,我们还有众多的第三方合作伙伴及公共平台的支持。

对于不熟悉飞思卡尔产品和网站的初学者来说,了解和使用这些资源这无疑是一个令人望而生畏的浩瀚工程。

本指南的目的,就是给初学者提供一个指导,让他们不被这些海量信息淹没;用户根据本指导提供的操作步骤,能迅速找到所需的资源,了解如何使用相关的工具。

在本指南中,我们以飞思卡尔的新一代Kinetis 单片机K22系列为例,介绍了如何获取与之相关的资源,如何对其进行软硬件设计和开发。

实际上,这些方法也适用于其它的单片机系列。

当然,对于其它有较多不同之处的产品,我们也会继续推出相应的文档,供广大用户参考。

目录1 如何获取技术资料与支持 ..........................................................2 2 如何选择产品、申请样片及购买少量芯片和开发工具 ........... 93 飞思卡尔单片机的开发环境、开发工具和生态系统 ............. 224 如何阅读飞思卡尔的技术文档 ................................................ 45 5 飞思卡尔单片机硬件设计指南 ................................................ 55 6飞思卡尔单片机软件开发指南 (67)飞思卡尔单片机快速上手指南, Rev. 1, 09/20142Freescale Semiconductor, Inc.1 如何获取技术资料与支持1.1 概述当用户使用飞思卡尔单片机芯片时,如何获取芯片的数据手册(Datasheet )、参考设计(Reference Manual )和官方例程等资源呢?另外当用户遇到了技术问题该如何获得帮助和解答呢?这里以Kinetis 的K22系列芯片为例为大家介绍如何解决这些问题。

飞思卡尔单片机程序调试方法说明

飞思卡尔单片机程序调试方法说明

飞思卡尔单片机程序调试方法说明对于飞思卡尔单片机编程,常用的调试方法有3种:调试方法1:在线调试法(Debug模式)CodeWarrior 10.3 开发环境下,可启动Debug模式,利用step into, step over, step return ,run to line 按钮,程序中设置断点,修改变量的值,查看寄存器的值等,进行调试。

有关调试窗口的按钮定义和调试方法,可查看帮助中debug View 和Debug information的说明。

调试方法2:串口调试法通过将程序运行过程中的数据、变量值等发送到PC机上查看,同时也可从PC机上通过串口发送数据到单片机,修改程序运行的参数(或步骤)进行调试。

智能车运行过程中常用用串口调试的方法。

调试方法3:硬件调试法通过连接在芯片外部的硬件或电路的变化或响应,查看程序运行的结果或状态(例如,在程序的某一位置点亮小灯、开蜂鸣器、发数据到LCD等)。

理解和掌握概念:单步调试相信任何调试人员对单步调试非常的熟悉。

CodeWarrior(与Eclipse基本一致)提供step into、step over、step return三个命令来支持单步调试。

三者的具体区别是:step into(快捷键F5)就是单步执行,遇到子函数就进入并且继续单步执行;step over(快捷键F6)是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。

step return(快捷键F7)就是单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函数。

说的通俗点就是,step into:进入子函数,step over:越过子函数,但子函数会执行,step return:跳出子函数。

此外,Eclipse还提供了Run to line(快捷键Ctr + R)功能,从开始处运行程序,到正在执行的断点暂停。

飞思卡尔智能车dg128单片机控制程序代码

飞思卡尔智能车dg128单片机控制程序代码
}
void AD_Init(void)
{
ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0x44; //每次转换8个序列, FIFO, Freeze模式下继续转
ATD0CTL4=0x02; //10位精度, 采样时间为2个AD时钟周期,ATDClock=4MHz
//设置舵机
PWMCTL_CON01=1; //使得通道0,1成为16位pwm
PWMPER0 =0x75;
PWMPER1 =0x30; //舵机的频率是: 24M/8/30000=100Hz,T=10ms
PWMDTY01=4500; // 对应为4500/30000的占空比,待调整
Infrared_detect();
data_handle();
motor_ctl();
steer_ctl();
}
}
void interrupt 26 MDC_ISR(void)
{
static unsigned int number_count=0; static unsigned int start=0; static
go=2;
if(begin>=150)
go=3;
}
}
}
//-----系统初始化-----------------------
void system_init(void) //system initiat
void speed_ctl(void); //速度控制
void motor_ctl(void); //电机控制
void PACBInit(void);

飞思卡尔DG128_PE编程入门教程

飞思卡尔DG128_PE编程入门教程

飞思卡尔DG128—PE编程入门教程(1)首先打开CodeWarrior 5.0 开发环境,然后在弹出的选项中选择新建工程注释:如果没有弹出这个对话框,可以在下面的File中选择New Project新建一个工程。

(2) 选择开发芯片的型号(这里我们使用的是MC9S12DG128)接着选择TBDML,这个是我们使用在线调试功能的选项。

(3) 选择工程的生成路径,注意:如果我们不使用PE编程功能的话,在这步结束后,可以直接选择完成按钮来完成工程的新建。

(4) (PE编程功能的步骤)下一步,这个对话框我们什么都不用选择,直接点击下一步。

(5)选择下面这个选项来启动PE编程功能。

(6) 红色边框中选项的功能为是否启动浮点数据的使用,默认第一个是不启用;第二个是启用,float数据为32位,double为32位;第三个是启用,float 数据为32位,double数据为64位。

(7)最后一步什么都不要设置,直接点击完成。

(8) 以上步骤我们完成了一个DG128工程的新建步骤。

PE的使用步骤:(1) 新建工程后,会自动弹出个芯片封装型号的选择,选择后点击OK。

(注意:我们学校使用的芯片是112管脚,所以注意选择红线标注的选项)(2) 点击OK后,就会出现我们要编程的环境了。

如下所示:(3)红色标注的地方就是该工程的工作区。

细心的同学就会发现,它生成的文件中没有我们需要写的源文件XXX.c 。

那我们现在就来生成这些文件,找到下图的选项Processor Expert 。

然后点击第二个选项的Generate Code ' XXX .mcp' (这里的XXX 表示该工程名称)。

下面是自动生成的文件。

这时候发现软件为我们自动的生成了一个Project.c (Project 是我这个工程建立的文件命,不同的工程文件名将导致这个名字不同)的文件。

这个就是我们将要编写的源文件了,它里面包含了主函数main()。

飞思卡尔单片机教学

飞思卡尔单片机教学
模式选择及相关引脚 试时使用。XCLKS表示:1-使用pierce oscillator,0-使用colpitts oscillator ,内部有上拉电阻,所以悬空默认为1,只在RESET上升
沿锁存。LSTRB:在外部使用2片8位宽度存储器时和ADDR0,R/W配合使用。可可转转到到9页页图图。。
模式选择和PORTE复用 TEST:保留脚,接地 XIRQ:非屏蔽中断 IRQ:可屏蔽中断
RAM
EEPROM
Flash/ROM
外部扩展存储器

§3-5 复位及时钟—复位
上电复位
单片机自动检测VDD端的正跳变,启动自动工作。
外部复位
通过RESET引脚加一低电压,拉低超过一定时间 后可实现复位。
看门狗复位
帮助系统在软件跑飞后自动复位。
时钟监视器复位
利用内部的RC电路来保证时钟频率满足要求。
MC9S12DG128拥有128K的FLASH,8K的RAM,2K的EEPROM。
用于给单片机内部提供合适的电源电压,9S12单片机内核使用2.5V供电.VDD1\2,VSS1\3,VDDPLL若使用电压调整模块,这些引脚
电压调整模块及相关引脚 只用接去耦电容.注意VDD1.2的箭头是向外出的.
电压调整模块
存储器容量寄存器
RAM_SW2-RAM_SW0:分配系统RAM存储空间
寄存器区映射寄存器-INITRG
指定内部寄存器区基址的高5位。 则最小基址是$0000,最大基址为$7FFF(D7=0决定)。
使用时,一般定位在$0000开始的1K中。 因为前256个字节可以用直接地址(8 bit地址)访问,如果
Z: 0标志,当运算结果为0时,该位置1。
V: 2补码运算溢出标志,当运算结果出现2补码溢出时,该位置1。

飞思卡尔单片机 DG128 Timer寄存器说明

飞思卡尔单片机 DG128 Timer寄存器说明

Timer寄存器说明1、定时器/计数器系统控制寄存器1(TSCR1)TSCR1 寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等待、BDM 方式下的行为,还包括标志的管理方式。

其各位的意义如下:TEN:定时器使能位,此外它还控制定时器的时钟信号源。

要使用定时器模块的IC/OC 功能,必须将TEN 置位。

如果因为某种原因定时器没有使能,脉冲累加器也将得不到ECLK/64 时钟,因为ECLK/64 是由定时器的分频器产生的,这种情况下,脉冲累加器将不能进行引脚电平持续时间的累加。

0:定时器/计数器被禁止,有利于降低功耗。

1:定时器/计数器使能,正常工作。

TSWAI:等待模式下计时器关闭控制位。

【注意】定时器中断不能用于使MCU 退出等待模式。

0:在中断等待模式下允许MCU 继续运行。

1:当MCU 进入中断等待模式时,禁止计时器。

TSFRZ:在冻结模式下计时器和计数器停止位。

0:在冻结模式下允许计时器和计数器继续运行。

1:在冻结模式下禁止计时器和计数器,用于仿真调试。

【注意】TSFRZ 不能停止脉冲累加。

TFFCA:定时器标志快速清除选择位。

0:定时器标志普通清除方式。

1:对于TFLGl($0E)中的各位,读输入捕捉寄存器或者写输出比较寄存器会自动清除相应的标志位CnF。

对于TFLG2($0F)中的各位,任何对TCNT 寄存器($04、$05)的访问均会清除TOF 标志;任何对PACN3 和PACN2 寄存器($22,$23)的访问都会清除PAFLG 寄存器($21)中的PAOVF 和PAIF 位。

任何对PACN1 和PACN0 寄存器($24,$25)的访问都会清除PBFLG 寄存器($21)中的PBOVF 位。

【说明】这种方式的好处是削减了另外清除标志位的软件开销。

此外,必须特别注意避免对标志位的意外清除。

2、计时器系统控制寄存器2(TSCR2)寄存器偏移量:$000DTOI:定时器/计时器溢出中断使能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

飞思卡尔DG128—PE编程入门教程(1)首先打开CodeWarrior 5.0 开发环境,然后在弹出的选项中选择新建工程注释:如果没有弹出这个对话框,可以在下面的File中选择New Project新建一个工程。

(2) 选择开发芯片的型号(这里我们使用的是MC9S12DG128)接着选择TBDML,这个是我们使用在线调试功能的选项。

(3) 选择工程的生成路径,注意:如果我们不使用PE编程功能的话,在这步结束后,可以直接选择完成按钮来完成工程的新建。

(4) (PE编程功能的步骤)下一步,这个对话框我们什么都不用选择,直接点击下一步。

(5)选择下面这个选项来启动PE编程功能。

(6) 红色边框中选项的功能为是否启动浮点数据的使用,默认第一个是不启用;第二个是启用,float数据为32位,double为32位;第三个是启用,float 数据为32位,double数据为64位。

(7)最后一步什么都不要设置,直接点击完成。

(8) 以上步骤我们完成了一个DG128工程的新建步骤。

PE的使用步骤:(1) 新建工程后,会自动弹出个芯片封装型号的选择,选择后点击OK。

(注意:我们学校使用的芯片是112管脚,所以注意选择红线标注的选项)(2) 点击OK后,就会出现我们要编程的环境了。

如下所示:(3)红色标注的地方就是该工程的工作区。

细心的同学就会发现,它生成的文件中没有我们需要写的源文件XXX.c 。

那我们现在就来生成这些文件,找到下图的选项Processor Expert 。

然后点击第二个选项的Generate Code ' XXX .mcp' (这里的XXX 表示该工程名称)。

下面是自动生成的文件。

这时候发现软件为我们自动的生成了一个Project.c (Project 是我这个工程建立的文件命,不同的工程文件名将导致这个名字不同)的文件。

这个就是我们将要编写的源文件了,它里面包含了主函数main()。

大家不必理会其他文件夹中的文件,只要关心这三个文件即可。

下面说明一下这三个文件的使用。

1.Events.c这个文件中包含了中断事件代码,所以中断服务程序只能写在这个文件中,具体怎么写,后面将以一个定时器的使用来向大家介绍。

2.Project.c这个文件中包含了主函数main(),程序将从这里开始执行;注意:这个main函数中包含了一句PE_low_level_init();语句。

这条语句的功能是初始化PE。

所以大家不用管他,千万不要删除,否则将出现错误。

3.Events.h这个文件中包含了中断事件代码的一些声明。

下面将通过一个功能模块的添加和编程来向大家演示PE的使用。

一.首先来介绍下时钟模块的使用:点击这个选项;进入到PE工作区,这时候将看到我们的芯片型号,然后双击它。

提示:这里有个使用技巧,我们要编写的两个文件就包含在这个界面的文件夹中,即:Project.c:main和Events.c:event。

双击它既可进入需要编写的文件界面。

右边将出现时钟频率选择的选项,需要修改两处红框标注的地方。

第一处修改该外部晶振频率(此时晶振频率为9.8304MHZ);第二处修改该芯片的所要设定的总线频率,一般选为19.6608MHZ,此时使能PLL锁相环时钟。

这样我们就设置芯片执行的时钟频率。

二.IO口的使用1.这里学习如何添加要使用的功能模块,后面介绍的各个功能模块的添加方法一样,就不一一再演示了。

添加方法如下:然后右击选择Add Bean(s)…选项,此时将弹出如下对话框。

请注意第三个文件夹既可。

下面我们将这些文件夹展开。

(1) 串口功能:(2) AD功能:(3) IO口功能:(4) PWM功能:(5) 定时器功能(6) 定时脉冲采集我们这里要使用的是IO口功能,那么添加IO口功能函数这里有很多功能模块,那我们要怎么选择呢?仔细看下他们的名称就可以知道他们大概的作用。

第一个是1个IO口的控制模块,第二个是多个IO口的控制模块。

这些都是定义为输出,那输入的就是倒数第二个。

这里我们选择控制多个IO口,也就是第二个模块BitsI0,然后点击Add按键,接着关掉这个对话框,这时候界面如下所示:而且工作区中多了这个选项:这里可以选择要使用哪个IO端口,A口,B口,E口等等。

管脚也可选择,点击后面的添加,添加后如下:这里选择IO的工作模式,输入输出模式,是否上拉下拉。

这里设置初始化时的状态。

这里设置输出,初始值为0,也就是低电平。

然后点击编译下。

注意:在编译的过程中,系统会提示你是否要更新你的用户文件,就是Project.c和Events.c。

这个时候个人决定是否要更新。

这样设置完了IO的所有初始化工作,现在我们来学习如何使用这个模块。

点击那个IO口模块,将它展开。

显示出了很多函数,这很好,我们可以偷懒不用自己打键盘了。

大家可以这样偷懒下,点击住你要使用的函数,然后拖动他,将他放在这两个文件中。

此时放在主函数main中这时候缺少形参,传进这个函数的形参。

那我们怎么知道它需要的是什么参数呢?事情很简单,请双击下右边工作区中你拖动的函数。

如果发现你无法双击的话,那请先编译一下,然后就可以了。

这个就是函数的原型了,上面有它的说明,英文好点的同学自己看说明吧。

其实不用看说明我们靠经验也知道,这个函数是控制IO某一位的置位。

这里填入2。

下面简单介绍下各个函数的功能下,使用方法如上,说明双击函数,查看原型即可。

这两个函数第一个是获得当前IO口的输入还是输出模式。

第二个是设置IO口为输入还是输出模式。

第一个获得8个IO的状态。

第二个设置8个IO的状态第一个是获得IO状态,只是可选择要获得的是哪几个引脚的。

第二个是设置多个IO状态。

第三个也是设置单个IO状态。

第四个是IO状态清零。

第五个是反转IO状态。

这样就介绍完了IO的使用方法。

下面我们来学习其他模块的使用。

三.串口的使用依照前面介绍添加IO口模块的步骤来添加串口模块。

添加完后,接着的工作就是初始化他的功能。

这个功能很简单,我们只要设置下波特率即可,其实的参数我们使用默认的。

默认使用串口0(SCI0)。

下面来看看它的功能函数。

这里有很多函数前面有个红色的叉,这表示没有使能这个功能,大家如果要使用的话,请在叉那里点击一下,让它变成绿色的沟即可。

注意:由于这个串口发送的功能函数比较底层,使用起来没那么方便。

但是基本可以满足一般简单的需求,使用时将其拖拽到指定的代码区即可。

四.AD模块的使用首先,依照上述步骤添加好AD模块。

接着初始化功能。

AD功能我们大多数使用过的人都知道,其实只需要设置管脚、精度和采样周期就可以使用。

红色边框1这里可以添加所要使用的AD管脚。

如我们要使用两个AD口,那点击下+按钮,添加成两个AD口。

红色边框2是AD管脚的具体位置。

下面选择下AD的采集精度。

最后设置一下采样后的转化时间就可以使用了。

此时点击选择那个....选择转化时间。

弹出下面的对话框。

注意下:在左边用红色边框话那个是us微秒的单位,显示为乱码,这里可以自己填入时间,如果不知道要填的是多大的时间的话,那可以双击在右边红色边框内列表中的转化时间。

最后点击OK退出。

这里我大概初始化完成AD的功能。

下面了解他的功能函数。

Codewarrior IDE中生成的函数中,对用户而言,最有用的是下面两个函数。

byte AD2_Measure(bool WaitForResult);//开启AD转换byte AD2_GetV alue16(word *V alues);//获得AD采集结果,16位的数据输出。

举例说明:int sum;AD1_Measure(0);AD1_GetV alue16(&sum);sum >>= 4;//这里发现采集出来的值被左移了4位,所以要把它右移回来,这样才是正确的数值。

这个例子中将获得的采集值存入sum中。

注意了:在Events.c这个文件中,多加出来一个AD的中断函数,这个是PE默认生成的。

在初始化的时候可以关闭,不关闭也没关系,不写入代码即可。

五.PWM模块的使用依照上述步骤添加PWM模块。

这里只要设置这两个地方即可。

红色边框1是设置那个PWM管脚初始化。

红色边框2是设置PWM波的周期和占空比的(Period:周期Starting pulse width:占空比)先点击周期按钮选择周期。

左边的红色边框是要设置的单位,这里选择Khz为单位。

如果不知道要选择多少,可选择右边的红色边框。

占空比的设置同周期设置一样。

此时就设置完了PWM的功能。

功能函数如下:这里是默认使能的功能函数,先介绍下这几个函数的功能。

SetRatio16();功能是设置PWM的周期。

SetDutyUS() ;功能是设置占空比SetDutyMS() ;功能是设置占空比,与上面那个函数只是单位不同而已。

由于我们做智能车的时候,基本不去改动PWM的周期,需要我们改变的只有PWM的占空比,借此去控制舵机的转向和电机的转动。

SetDutyUS()和SetDutyMS()传入的参数一样,都是一个0到65535的数值。

六.定时器模块的使用首先我们来添加定时器的功能模块,接下来初始化。

这里有两个需要设置的地方。

红色边框1设置的中断源。

红色边框2设置的中断周期。

点击一下…按钮进入对话框选择中断时间。

这里我选择的是中断1ms中断一次。

如果要使用开启和关闭中断的功能函数,请选择这个选项然后点击这两个按键,使能这两个函数,其他的功能模块也可以这样。

最后编译一下文件。

这时候Events.c文件中就会出现多出一个中断函数。

中断程序就写在这里了。

以上就介绍一下飞思卡尔PE环境下基本模块的编程方法。

由于时间问题,未能更加详细讲述,可能会存在一些错误,请大家多多见谅。

改编:713_708_7052014年1月4日。

相关文档
最新文档