飞思卡尔单片机-ECT学习资料.docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 单片机 ECT 学习 资料
- 资源描述:
-
9S12 系列单片机的ECT (Enhanced Capture Timer Module)模块是在原68HC12 的 Standard Timer module 基础上加以增强功能形成的。 ECT 模块主要由以下几部分组成,参看图1: · 一个带可编程预分频的16位向上计数的自由运行计数器 · 8个独立的定时器通道,每个通道具备输入捕捉/输出比较功能 · 4个8位脉冲累加器,也可设置成2个16位脉冲累加器 · 一个带可编程预分频的16位的向下计数的计数器 · 从上面示意图中可以就看出,ECT 模块相当的复杂,不是简单的几句话就能说明白的。我也是通过很长时间的学习实践,才逐步掌握了ECT模块的使用。 本文将通过一系列的实例,从最简单的功能开始,逐步展开。一步一步的展示ECT 模块的强大功能。 实验1:自由运行计数器(TCNT)与溢出中断 自由运行计数器(TCNT)也称为自由运行主定时器,是一个16位的计数器,可以说是ECT的核心。在系统复位时,这个自由运行计数器的初值为$0000。当ECT 模块运行时,自由运行计数器从$0000~$FFFF 循环递增计数。当计数器溢出复零时,会置位中断标志。利用这个计数器,可以产生一个周期的中断信号。 TCNT 的输入时钟也是可以选择的,图2 给出了TCNT 的时钟源的示意图。可以看出,TCNT的输入时钟可以来源于总线时钟、总线时钟经过预分频、外部引脚输入的脉冲、外部引脚输入脉冲经过脉冲累加器分频这四种选择。当然,选择哪个时钟源其实就是在程序中设置一下相应的寄存器这么简单。 了解了上面的介绍,就可以开始本文的第一个例子了,这个例子非常简单,将BUS CLOCK 分频后作为TCNT 的输入时钟,使能 TCNT 溢出中断。 在开始代码之前,还需要介绍几个程序中用到的寄存器。 TCNT寄存器(Timer Count Register) 这个寄存器其实已经介绍过了,它是一个16 位的只读寄存器。在每个时钟输入下计数值会自动加1,当计数值为 0xFFFF 后下一个时钟脉冲会使计数器溢出为 0x0000。程序中可以随时读取 TCNT 的值,唯一需要注意的是 TCNT 是个16位的寄存器,读取时要一次将其读出,如果分为高低两个字节读取,读到的数据不一定能拼接成一个有效的计数值。 图 3 TCNT 寄存器 TFLG2寄存器 (Main Timer Interrupt Flag 2) 这个寄存器只有最高位TOF 是有意义的。当TCNT 溢出时会置位 TOF 位,程序中可以轮询这一位来判断TCNT 是否溢出了。当然这种轮询的方法效率很低,更实用的方法是利用 TCNT 溢出中断。向TOF 位写 1 会清除TOF,在 TCNT 溢出中断中就必须清除 TOF,否则就不会响应下一次溢出中断。 图 4 TFLG2 寄存器 TSCR2 寄存器(Timer System Control Register 2) 这个寄存器由三部分功能组成。 TOI 位是 Timer Overflow Interrupt Enable 的简写。TOI 位为 0时表示禁止 TCNT 溢出中断,这时只能通过轮询 TOF 位来判断是TCNT计数器是否溢出了。TOI 位为 1 表示使能 TCNT溢出中断。 TCRE 位是 Timer Counter Reset Enable 的简写。TCRE 位为 0表示TCNT自由运行,TCRE 位为1表示当TCNT = OC7 时复位。 PR2、PR1、PR0 是总线时钟的预分频因子。当 PR2-0 组成的三位 2进制数为 N 时,表示将 BUS CLOCK 分频 2^N。 图 5 TSCR2 寄存器 TSCR1寄存器(Timer System Control Register 1) TEN 位为0时 ECT模块被禁用。TEN 位为1时 ECT模块被使能。 TSWAI(Timer Module Stops While in Wait) 位为0时,ECT 模块在 STOP 模式下仍旧运行。TSWAI位为1时,ECT 模块在 STOP 模式停止运行。 TSFRZ (Timer and Modulus Counter Stop While in Freeze Mode),这一位与 TSWAI 位类似。 TFFCA (Timer Fast Flag Clear All)我还没仔细研究,作用不明。 图 6 TSCR1 寄存器 有了上面这些介绍,就可以很容易的看懂下面的代码了。在我的实验板上,晶振频率为16.384MHz,因为没有开启PLL,BUS CLOCK 为8.192MHz,内核频率为16.384MHz。8.192MHz被128预分频后为 64KHz,16位计数器溢出频率为0.98Hz(64000/65536) [cpp] view plaincopy 1. #include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h" 4. 5. void ECTInit(void) 6. 7. { 8. TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8MHz/128=64KHz 9. TSCR2_TOI = 1; //timer overflow interrupt enable 10. TSCR1_TEN = 1; //timer enable 11. } 12. 13. void main(void) 14. { 15. SCIInit(); 16. SCISetBaudRate (SCI0, 9600, 8192000L); 17. ECTInit(); 18. EnableInterrupts; 19. for(;;) 20. { 21. _FEED_COP(); /* feeds the dog */ 22. } /* loop forever */ 23. 24. } 25. 26. 27. interrupt VectorNumber_Vtimovf void ECT_TimerOverflow_ISR(void) 28. { 29. TFLG2_TOF = 1; //clear timer overflow flag 30. SCIPutChar(SCI0, 'x'); 31. } 实验2:输出比较功能(Output Compare) 所谓输出比较功能就是根据需要设置输出比较寄存器的值,自由运行计数器的值与输出比较寄存器的值每隔4个总线周期比较一次,当两者相等时,会在规定的通道引脚上输出预定的电平。如果允许中断,会产生一次输出比较中断。 相应需要操作的寄存器有如下几个: TCx 寄存器(Timer Input Capture/Output Compare 0-7) 总共8个16位寄存器,分别对应8个输出比较通道。当 TCx = TCNT 时满足输出比较条件,这时根据程序设置在对应输出管腿输出特定的电平(具体方法见TCTL1/TCTL2 寄存器的功能设置)或者产生对应的中断事件。 TIOS寄存器(Timer Input Capture/Output Compare Select) 用来设定某一通道是输入捕捉功能还是输出比较功能。IOSx = 1 对应位为输出比较功能,IOSx = 0 对应位为输入捕捉功能。 图 7 TIOS寄存器 TIE寄存器(Timer Interrupt Enable Register) 其中某一位置 1 后则使能相应的通道的中断,这里控制的中断既包括输出比较中断也包括后面要介绍的输入捕捉中断。 图 8 TIE寄存器 TCTL1/TCTL2 寄存器(Timer Control Register 1/2) 用来决定输出比较时的输出模式和输出电平。具体参见表格 1。 表格 1 输出比较动作 OMx OLx 动作 0 0 不输出 0 1 每次翻转OCx 的电平 1 0 OCx = 0 1 1 OCx = 1 图 9 TCTL1/TCTL2 寄存器 TFLG1寄存器(Main Timer Interrupt Flag 1) 用来标识中断条件发生了,对某一位写1则清除对应位。 图 10 TFLG1寄存器 有了这些就可以开始第二个例子了。第二个例子利用通道0和通道1的输出比较功能。在 TCNT = TC0 时将对应的PT0 管腿的输出电平翻转,并且产生相应中断。在 TCNT = TC1时将对应的PT1 管腿的输出电平翻转,并且产生相应中断。这样,PT0和PT1 就会输出两个具有恒定相位差的同频方波信号了。 [cpp] view plaincopy 1. #include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h" 4. 5. void ECTInit(void) 6. { 7. //TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8Mhz/8 8. TSCR2_TOI = 1; //timer overflow interrupt enable 9. TSCR1_TEN = 1; //timer enable 10. 11. TIOS_IOS0 = 1; // channel 0 as output compare 12. TIOS_IOS1 = 1; // channel 1 as output compare 13. TC0 = 10000; 14. TC1 = 20000; 15. TIE_C0I = 1; // 使能 channel 0 中断 16. TIE_C1I = 1; // 使能 channel 1 中断 17. 18. TCTL2_OL0 = 1; 19. TCTL2_OM0 = 0; 20. 21. TCTL2_OL1 = 1; 22. TCTL2_OM1 = 0; 23. } 24. void main(void) 25. { 26. SCIInit(); 27. SCISetBaudRate (SCI0, 9600, 8192000L); 28. ECTInit(); 29. DDRM_DDRM0 = 1; 30. DDRM_DDRM1 = 1; 31. DDRM_DDRM2 = 1; 32. EnableInterrupts; 33. 34. for(;;) 35. { 36. _FEED_COP(); /* feeds the dog */ 37. } /* loop forever */ 38. } 39. 40. 41. interrupt VectorNumber_Vtimovf void ECT_TimerOverflow_ISR(void) 42. { 43. TFLG2 = TFLG2_TOF_MASK; //clear timer overflow interrupt flag 44. PTM_PTM0 = ~ PTM_PTM0; 45. } 46. 47. interrupt VectorNumber_Vtimch0 void ECT_0_ISR(void) 48. { 49. unsigned int value; 50. 51. TFLG1 = TFLG1_C0F_MASK; //clear channel 0 interrupt flag 52. PTM_PTM1 = ~ PTM_PTM1; 53. } 54. interrupt VectorNumber_Vtimch1 void ECT_1_ISR(void) 55. { 56. TFLG1 = TFLG1_C1F_MASK; //clear channel 1 interrupt flag 57. PTM_PTM2 = ~ PTM_PTM2; 58. } 59. interrupt VectorNumber_Vtimch7 void ECT_7_ISR(void) 60. { 61. TFLG1 = TFLG1_C7F_MASK; //clear channel 7 interrupt flag 62. } 下面是用 USBee 抓下来的波形图。Port M 0 是在溢出中断中翻转的。PT0 、PT1分别对应两个输出比较通道,两个上升沿的时间间隔为 1/8192=1.22ms,测量结果与理论值完全相同。 下面将程序做一个很小的修改。将 TC0 和 TC1 的值改成相同的。 [cpp] view plaincopy 1. void ECTInit(void) 2. { 3. //TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8Mhz/8 4. TSCR2_TOI = 1; //timer overflow interrupt enable 5. TSCR1_TEN = 1; //timer enable 6. 7. TIOS_IOS0 = 1; // channel 0 as output compare 8. TIOS_IOS1 = 1; // channel 1 as output compare 9. TC0 = 10000; 10. TC1 = 10000; 11. TIE_C0I = 1; // 使能 channel 0 中断 12. TIE_C1I = 1; // 使能 channel 1 中断 13. 14. TCTL2_OL0 = 1; 15. TCTL2_OM0 = 0; 16. 17. TCTL2_OL1 = 1; 18. TCTL2_OM1 = 0; 19. } 从波形图中可以看出,输出是正常的。但是有些低版本的 ECT 模块有些问题,在这种情况下只有 通道 0 的中断能够响应,通道1的中断无法响应。 实验3:输出比较 7 通道的特殊功能 输出比较通道OC7 具有特殊的权限,可以废止其他输出比较通道的动作,直接决定各个输出通道的状态。这种特权功能是通过配置两个额外的寄存器OC7M和OC7D来实现的。 OC7M寄存器(Output Compare 7 Mask Register) 使OC7Mx=1,OC7强行参与管理通道x的输出,但通道OC7 对通道OC0~OC6的管理仅限于使其引脚PT0~PT6 清0或置1,不能将引脚电平翻转,引脚的动作来自于输出比较7数据寄存器OC7D中的对应位OC7Dx定义的电平状态,必须事先通过程序设置。。 图 11 OC7M寄存器 OC7D寄存器(Output Compare 7 Data Register) OC7Dx=0,则对应事件发生时相应PTx位将被输出为低电平,OC7Dx=1,则对应事件发生时相应PTx位将被输出为高电平。 图 12 OC7D寄存器 可以开始我们的实验了。这个实验将在PT0 管腿上输出一个占空比位1/4 的方波。实现方法为在 TCNT = 10000 时将 PT0 置为高电平,TCNT = 26384 时将PT0 置为低电平。下面是程序片段。 [cpp] view plaincopy 1. <p>#include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h"</p><p>void ECTInit(void) 4. { 5. //TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8Mhz/8 6. 7. TIOS_IOS0 = 1; // channel 0 as output compare 8. TC0 = 10000;</p><p> TCTL2_OL0 = 1; 9. TCTL2_OM0 = 1; // 使 channel 0 输出高电平 10. 11. TIOS_IOS7 = 1; // channel 7 as output compare 12. TC7 = 26384; 13. //TIE_C7I = 1; // 使能 channel 7 中断 14. 15. OC7M_OC7M0 = 1; 16. OC7D = 0; // 使 channel 0 输出低电平 17. 18. TCTL1_OL7 = 0; 19. TCTL1_OM7 = 0; 20. 21. TSCR2_TOI = 1; //timer overflow interrupt enable 22. TSCR1_TEN = 1; //timer enable 23. } 24. void main(void) 25. { 26. SCIInit(); 27. SCISetBaudRate (SCI0, 9600, 8192000L); 28. ECTInit(); 29. DDRM_DDRM0 = 1; 30. EnableInterrupts; 31. 32. for(;;) 33. { 34. _FEED_COP(); /* feeds the dog */ 35. } /* loop forever */ 36. } 37. 38. 39. interrupt VectorNumber_Vtimovf void ECT_TimerOverflow_ISR(void) 40. { 41. TFLG2 = TFLG2_TOF_MASK; //clear timer overflow interrupt flag 42. PTM_PTM0 = ~ PTM_PTM0; 43. }</p><p>interrupt VectorNumber_Vtimch0 void ECT_0_ISR(void) 44. { 45. 46. TFLG1 = TFLG1_C0F_MASK; //clear channel 0 interrupt flag 47. } 48. interrupt VectorNumber_Vtimch1 void ECT_1_ISR(void) 49. { 50. TFLG1 = TFLG1_C1F_MASK; //clear channel 1 interrupt flag 51. } 52. </p> 利用这种方式可以模拟个 PWM 功能出来。不过模拟出来的PWM周期只有8种选择。 在第一篇应用笔记中,我提到过TCSR2寄存器有一位叫 TCRE。TCRE 位是 Timer Counter Reset Enable 的简写。TCRE 位为 0表示TCNT自由运行,TCRE 位为1表示当TCNT = OC7 时复位。 下面将给出一个利用 TCRE的例子。同样是占空比25%,但是同时还调整了波形的周期。这个例子中,TC0 = 1000, TC7 = 4000。PT0 在1000时翻转一下,在4000时再翻转一下。同时4000时将TCNT值复位到0重新计数。这样波形的频率就成了 4000/8192000=4.88ms。 [cpp] view plaincopy 1. void ECTInit(void) 2. { 3. TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8Mhz/8 4. 5. TIOS_IOS0 = 1; // channel 0 as output compare 6. TC0 = 1000; 7. TIE_C0I = 1; // 使能 channel 0 中断 8. TCTL2_OL0 = 1; 9. TCTL2_OM0 = 1; // 使 channel 0 输出高电平 10. 11. TIOS_IOS7 = 1; // channel 7 as output compare 12. TC7 = 4000; 13. TIE_C7I = 1; // 使能 channel 7 中断 14. TCTL1 = 0x40; 15. 16. OC7M_OC7M0 = 1; 17. OC7D = 0; // 使 channel 0 输出低电平 18. 19. TCTL1_OL7 = 0; 20. TCTL1_OM7 = 0; 21. 22. TSCR1_TEN = 1; //timer enable 23. } 上面是实际波形,这里出现了个有意思的现象。PM0 一直为低电平,这表明TCNT 的Overflow 中断没有进去。说明这个中断只有在 TCNT为自由计数器时才有用,这点需要特别注意。 实验4:定时器溢出翻转功能 所谓定时器溢出翻转就是在TCNT溢出时将某个通道的输出管腿PTx电平翻转一下。这个功能很实用,可以实现PWM 功能。首先,还是要介绍个相关的寄存器TTOV。 TTOV寄存器 (Timer Toggle On Overflow Register 1) 定时器溢出触发寄存器 TTOV很简单,8位寄存器每一位对应一个输出比较通道,相应位置1后表示允许根据溢出特性翻转对应输出比较引脚。置0则禁止这一功能。 图 13 TTOV寄存器 有这些知识就足够了,下面开始我们的实验。这个实验的输出和上一个实验相同,将在PT0 管腿上输出一个占空比位1/4 的方波,不同的是实现方法。在 TCNT = TC0 = 49152 时将PT0管腿置 1,然后在TCNT溢出时翻转 PT0。程序片段如下。 [cpp] view plaincopy 1. #include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h" 4. 5. void ECTInit(void) 6. { 7. //TSCR2_PR = 7; //prescale factor is 8, bus clock/128=8Mhz/8 8. 9. TSCR2_TOI = 1; //timer overflow interrupt enable 10. 11. TIOS_IOS0 = 1; // channel 0 as output compare 12. TC0 = 49152; 13. TCTL2_OL0 = 1; 14. TCTL2_OM0 = 1; // 使 channel 0 输出高电平 15. 16. TTOV_TOV0 = 1; // TCNT 计数溢出时翻转 PT0 17. TSCR1_TEN = 1; //timer enable 18. } 19. void main(void) 20. { 21. SCIInit(); 22. SCISetBaudRate (SCI0, 9600, 8192000L); 23. ECTInit(); 24. DDRM_DDRM0 = 1; 25. EnableInterrupts; 26. 27. for(;;) 28. { 29. _FEED_COP(); /* feeds the dog */ 30. } /* loop forever */ 31. } 32. 33. 34. interrupt VectorNumber_Vtimovf void ECT_TimerOverflow_ISR(void) 35. { 36. TFLG2 = TFLG2_TOF_MASK; //clear timer overflow interrupt flag 37. PTM_PTM0 = ~ PTM_PTM0; 38. } 程序运行后就能在PT0 管腿上观测到 1/4 占空比的方波了。 这里需要特别说明的是TTOV不能与TCRE同时使用,比如下面这个例子。这个例子本意是在 TCNT = 10000 时翻转 PT0 通道,然后当 TCNT = 20000 时利用TTOV 功能再次翻转 PT0 的输出,同时由于 开启了 TCRE,让 TCNT 直接回到 0。 [cpp] view plaincopy 1. #include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h" 4. 5. void ECTInit(void) 6. { 7. TSCR2_TOI = 1; //timer overflow interrupt enable 8. 9. TIOS_IOS0 = 1; // channel 0 as output compare 10. TC0 = 15000; 11. TCTL2_OL0 = 1; 12. TCTL2_OM0 = 0; // 使 channel 0 输出高电平 13. 14. TIOS_IOS7 = 1; // channel 7 as output compare 15. TC7 = 20000; 16. 17. TCTL1_OL7 = 1; 18. TCTL1_OM7 = 0; // 使 channel 0 输出高电平 19. 20. TSCR2_TCRE = 1; //TCNT overflow when TCNT = TC7 = 20000 21. TTOV_TOV0 = 1; // TCNT 计数溢出时翻转 PT0 22. TSCR1_TEN = 1; //timer enable 23. } 24. void main(void) 25. { 26. SCIInit(); 27. SCISetBaudRate (SCI0, 9600, 8192000L); 28. ECTInit(); 29. DDRM_DDRM0 = 1; 30. EnableInterrupts; 31. 32. for(;;) 33. { 34. _FEED_COP(); /* feeds the dog */ 35. } /* loop forever */ 36. } 这里说明TCRE 功能开启后,TTOV 就不起作用了。其实这也不难理解,TTOV 发生的条件和 TCNT 的Overflow 中断产生的条件是相同的,都是在 TCNT 从 65536 向 0 溢出时才会发生。其他条件下都没有作用。 实验5:初识输入捕捉功能 所谓输入捕捉,简单的说就是感应输入引脚PTx上的电平的变化,如果发现电平变化,则: l TCNT计数器的值被保存到到输入捕捉寄存器TCx中,状态标志位被置 1 l 如果中断允许,则向CPU发出中断请求 ECT 模块可以捕捉到的电平变化包括上升沿、下降沿或任意沿。简单的说就是可以捕捉任意一种变化,功能还是很强悍的。 TCx 寄存器(Timer Input Capture/Output Compare 0-7) 在介绍输出比较功能时已经提到过。在这里,用来记录外部事件发生时TCNT的值。通过读取两次相邻事件 TCx 的值就可以计算出两次事件的间隔时间了。 TCTL3/TCTL4 寄存器(Timer Control Register 3/4) 定时器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA位决定通道 x 有效跳变边沿是上升沿、下降沿或任意跳变。具体如何设置参见表格 2 的说明。 表格 2 输入捕捉跳变边沿类型 EDGxB EDGxA 类型 0 0 禁止 0 1 上升沿 1 0 下降沿 1 1 任意跳变 图 14 TCTL3/TCTL4 寄存器 TCxH寄存器(Timer Input Capture Holding Registers 0-3) 当开启输入捕捉功能时,对应事件发生时TCNT的值会被拷贝到TCx 寄存器中。对于输入捕捉的前4个通道,在这个拷贝发生之前还要完成一件事情,就是将TCx 的值拷贝到TCxH中。因此,当输入捕捉中断发生时,TCx 中存储的是发生当前事件时 的TCNT 的值,TCxH 中存放的则是上一次事件发生时TCNT 的值。这两个值的差可以计算出两次事件间隔的时间。 程序中还要使用到的寄存器包括TIOS寄存器(Timer Input Capture/Output Compare Select)、TSCR1寄存器(Timer System Control Register 1)、TFLG1寄存器(Main T imer Interrupt Flag 1)和TIE寄存器(Timer Interrupt Enable Register)。在前面的介绍中已经提到过这些寄存器了,这里就不重复了。 下面是例子程序的部分代码,功能很简单。连续捕捉十次上升沿对应的TCNT,然后计算周期。 [cpp] view plaincopy 1. #include <hidef.h> /* common defines and macros */ 2. #include "derivative.h" /* derivative-specific definitions */ 3. #include "sci.h" 4. void ECTInit(void) 5. { 6. TIOS_IOS0 = 0; // channel 0 as output compare 7. TIE_C0I = 1; // 使能 channel 0 中断 8. 9. TCTL4_EDG0A = 1; 10. TCTL4_EDG0B = 0; // 检测上升沿 11. 12. TSCR1_TEN = 1; //timer enable 13. } 14. unsigned short buf[11]; 15. char flag; 16. void main(void) 17. { 18. long interval = 0; 19. char i; 20. SCIInit(); 21. SCISetBaudRate (SCI0, 9600, 8192000L); 22. ECTInit(); 23. 24. EnableInterrupts;展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




飞思卡尔单片机-ECT学习资料.docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12073032.html