飞思卡尔入门程序总结

上传人:飞*** 文档编号:43401166 上传时间:2018-06-06 格式:DOC 页数:5 大小:40KB
返回 下载 相关 举报
飞思卡尔入门程序总结_第1页
第1页 / 共5页
飞思卡尔入门程序总结_第2页
第2页 / 共5页
飞思卡尔入门程序总结_第3页
第3页 / 共5页
飞思卡尔入门程序总结_第4页
第4页 / 共5页
飞思卡尔入门程序总结_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《飞思卡尔入门程序总结》由会员分享,可在线阅读,更多相关《飞思卡尔入门程序总结(5页珍藏版)》请在金锄头文库上搜索。

1、1.对对 IO 口输入输出操作程序举例:口输入输出操作程序举例:A 口接流水灯并实现闪烁口接流水灯并实现闪烁 void main(void) while(1) DDRA=0xff;delay(500);PORTA=0xff;delay(500);PORTA=0; 另外,B、E 口的 IO 功能操作也是一样的,因为位数一样寄存器一样,其他口的寄存器就 不太一样了!J,P,M,T,S 这五个口除具有数据寄存器外,他们都另外多出另一个端口输入寄 存器(该寄存器功能我未知)! 2.SPI 总线接口总线接口 SPI 是一种高速高效的同步串行接口,这种接口主要用于 MCU 与外部的接口芯片 交换数据,只要

2、有 SPI 口的芯片都可以与单片机相连形成主从机系统进行数据的传递, 比如 SPI 用于移位寄存器 74HC164,这是个串入并出的芯片这样可以实现扩展 IO 口。 还有 AD 转换芯片 AD7793,可以实现数模转换,还有飞思卡尔公司的电源管理芯片 MC33389。 因设备有限此功能待以后调试! 3.SCI 总线接口总线接口 MC9S12DG128 单片机有两个 SCI 模块,可以选用其中任何一个。他的使用有 8 个相应寄存器共设置,其中有波特率设置寄存器 SCIBDH,SCIBDL,还有控制寄存器 SCICR1,SCICR2,状态寄存器 SCISR1,SCISR2,数据寄存器 SCIDRH

3、,SCIDRL; 简单讲 SCI 的使用就是寄存器初始化,数据传送方式设置,下面举个初始化使用 的简单例子:SCICR2=0x08;/发送使能设置SCIBDH=0x00;/波特率设置为 9600SCIBDL=0x9c; 就是这样这个是简单实用时的设置,发送函数如下: While(!(SCISR1/C 代表需要传送的数据 4.有关定时器有关定时器 TCNT TCNT 是芯片内部的 16 位主定时器,他不停地对内部时钟信号进行计数,从 0x0000 直到 0xffff,计满后溢出又返回到 0x0000,程序随时可以读取,但在普通模式下禁止写 入。TCNT 应该按字访问,分别访问高低字节将出现错误!

4、 可以直接利用它的来实现一些延时的功能! 例如下面的程序: #include #include “derivative.h“ void TimerOverflow() unsigned char i=1,j=0x80;while(i!=0)i=1;while(TCNT!=0x0000);/对比定时器寄存器while(TCNT=0x0000); void main(void) EnableInterrupts;TSCR1=0x80;/定时器使能TSCR2=0x06;/设置时钟预分频为 64DDRB=0xff;PORTB=0xff;for(;)TimerOverflow(); 5.系统时钟锁相环系

5、统时钟锁相环 锁相环的初始化比较麻烦,与此相关的控制寄存器有:锁相环控制寄存器 PLLCTL时钟合成寄存器 SYNR,有效值为 0-63时钟分频寄存器 REFDV,有效值为 0-15时钟产生模块的标志寄存器 ORGFLG时钟选择寄存器 CLKSEL 锁相环初始化的步骤为:时钟选择寄存器清零时钟选择寄存器清零(不使能锁相环,该功能有 CLKSEL 的 最高位控制,即 CLKSEL=0x00)锁相环电路允许设置锁相环电路允许设置(该功能由 PLLCTL 的第 6 位控制,将其置 1 即可,注意该寄存器的设置必须进行位操作)然后就是对然后就是对SYNR 和和 REFFV 进行赋值进行赋值,根据公式设

6、定总线时钟fVCO=fVCO= 2*fOSC*(SYNDIV2*fOSC*(SYNDIV + + 1)/(REFDIV1)/(REFDIV + + 1)1)然后延时几个总线周期然后延时几个总线周期以等待时钟频率稳定判断时钟频判断时钟频率是否稳定率是否稳定(该功能与 ORGFLG 有关,当该寄存器的 LOCK 位,第 3 位为 1 时表明频 率已经稳定,故该处用一判断语句设置)最后就是允许锁相环时钟作为系统时钟最后就是允许锁相环时钟作为系统时钟 了了(该功能由 CLKSEL 的最高位控制,置 1 即选定) 举个例子举个例子: 设置总线频率为 24MHz CLKSEL=0x00; PLLCTL|=

7、0x40; SYNR=2;REFDV=1; Delay() ; While(!(CRGFLG_LOCK=1) ; 或 while(!(CRGFLG这样一个锁相环程序就完成了,设置的总线频率为 24M; 6.定时器溢出中断的使用定时器溢出中断的使用 下面简单介绍一下使用中学到的,首先锁相环程序的首次使用成功 例如: void clock_init()/24M 锁相环时钟uchar m=0; CLKSEL=0x00;/时钟选择寄存器清零,不使能锁相环时钟PLLCTL|=0x40;/锁相环控制寄存器第 6 位置 1,允许使用锁相环SYNR=2;REFDV=1;m+;/延时以使锁相环时钟稳定m+;m+

8、;while(CRGFLG/当判断时钟稳定时,时钟选择器第 7 位置 1,使能锁相环时钟 下面介绍定时器溢出使用的初始化程序 例如: void timerout_init()/定时器初始化 TSCR1|=0x80;/定时器允许工作TSCR2|=0x80;/定时器溢出中断允许TSCR2|=0X07;/时钟 128 分频EnableInterrupts;/使能中断 还有相应的中断服务程序 例如:#pragma CODE_SEG NON_BANKED void interrupt 16 timeout_int() t+;TFLG2|=0x80;/定时器器溢出标志位置位if(t=5) t=0;PORT

9、B=PORTB;EnableInterrupts; 这个程序让我知道了定时器溢出中断的使用方法,为我今后进行别的模块的学习打下 了好的基础,也使我更加有信心! 7.7. 所谓输入捕捉功能所谓输入捕捉功能 在输入捕捉模式下,相应的输入捕捉通道通过捕捉该管教上的电平变化发出锁存 信号 ,将该时刻计数器的值锁存到捕捉寄存器捕捉寄存器中,通过连续的测量,记录下每次锁存 的值就可以计算出脉冲的宽度或者周期信息。 如果配合输出比较功能,还可以产生一段时间的延迟,例如:当需要在一个外部 事件发生一定时刻后,单片机产生一个输出信号来控制某个操作。这既可以利用输入 捕捉来记录外部事件发生的时刻,把这个时间加上一

10、定的延时值送到输出比较寄存器, 并允许输出比较功能就可以达到延迟目的! 首先介绍不带缓冲的输入捕捉通道不带缓冲的输入捕捉通道: HCS2 增强型定时器中共有 8 个输入捕捉通道,其中 4 个(PT4PT7)和普通的输 入捕捉通道一样,带有一个捕捉寄存器用来记录管教上的电平变化时自由计数器的锁 存值。当 ICOVW 寄存器的 NOVWx 位清零时,每发生一次输入捕捉,新的计数器的值就 会覆盖原来的输入捕捉寄存器的内容;当该位置 1 时,除非输入捕捉寄存器为空,否 则新的值不能写入(使输入捕捉寄存器为空的方法就是读取该寄存器) 。这样就避免了 新的计数值覆盖旧的计数值。 带缓冲的输入捕捉通道带缓冲

11、的输入捕捉通道: 另外 4 个带缓冲的输入捕捉通道(PT0PT3),除了带有捕捉寄存器之外,还有一 个保持寄存器,可以在不产生中断的条件下连续记录两次自由计数器的值。他有两种 工作方式,锁存方式锁存方式:当模数计数器减为 0,向模数计数器写入“$0000”或写强制锁 存位 ICLAT 时,输入捕捉计数器 值将锁存到相应的通道的保持寄存器中,并将输入捕 捉计数器清零。当 ICOVW 寄存器的 NOVWx 位清零时,每次发生输入捕捉事件时,新的 计数值将覆盖旧的输入捕捉寄存器值,如果是锁存方式,则保持寄存器中的内容将被 更新。 当该位置 1 时,除非输入捕捉寄存器或是保持寄存器为空,否则新的计数器

12、的值将不 能写入。队列方式队列方式:当 ICOVW 寄存器的 NOCWx 位清零时,每发生输入捕捉事件,输入 捕捉寄存器的值将被写入保持寄存器中,新的计数器的值将记录在输入捕捉寄存器中。 当该位置 1 时,除非输入捕捉寄存器或是保持寄存器为空,否则新的计数值竟不能写 入。 8. 输入捕捉使用总结输入捕捉使用总结。 测试了一下通道 4 的输入捕捉功能,但最终还是多方了解资料才最终得以成功! 主要是初始化程序,示例如下: void catch_in4_init()/不带缓冲输入捕捉初始化 TIOS=0x00;/设置通道为输入捕捉方式TSCR1=0x80;/使能定时计数器工作TSCR2=0x07;/

13、设置时钟 128 分频TCTL3=0x03;/设置通道 4 为上升下降沿都捕捉TIE=0x10;/使能通道 4 捕捉中断EnableInterrupts;/使能全局中断 中断服务程序也很重要,最主要就是不能少了两个标志位清零的语句,示例如下:#pragma CODE_SEG NON_BANKED void interrupt 12 catch_in4_() TFLG2=0x80;/指示中断发生时刻的中断标志位清零TFLG1=0x10;/指示中断发生通道标志位清零-这两个标志寄存器不一样t+;if(t=5)t=0;PORTA|=0x55;PORTB=PORTB;delay(); EnableIn

14、terrupts; 就这样吧,一个简单的输入捕捉的程序就完整了!9.9. PWMPWM 初始化程序流程是 允许 PWM选择 PWM 时钟选择极性 对齐方式选择周期脉宽占空比计数 器清零 开始计数PWM 的应用,把初始化程序都写好后,把占空比的值设置为一个变量赋予的形式,这样 每次需要调速的时候只用调用这个函数,改变一下占空比就行啦!舵机的调速要实现平滑就要在调速的时候给定量一点一点变化!这个有待调试! 10.10. 脉冲累加器脉冲累加器 A A 的使用的使用 首先是初始化 控制寄存器:使能 16 位脉冲累加器,选择工作模式(用到编码器上,则是用事件计数 模式) ,有效边沿设定,时钟选择。 脉冲累加计数寄存器:这个用于记录事件计数的个数,溢出时能够产生中断。 下面给出使用的初始化程序:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号