历史上的今天
今天是:2025年03月23日(星期日)
2021年03月23日 | 飞思卡尔单片机DZ60---TPM1输出比较
2021-03-23 来源:eefocus
#include #include "derivative.h" /* include peripheral declarations */ //输出比较试验 //定时计数器寄存器(TPMxCNTH:TPMxCNTL)中的值与通道寄存器(TPMxCnVH:TPMxCnVH)相匹配时,会产生一个中断标志位 //并且会在管理管脚强制执行所选的输出操作。输出比较可以选择用于强制将管脚设置为0或1,翻转管脚电平(本试验采用? //或忽略。本试验使能了TPM1中通道0(对应管理管脚为PTD2 ,led3 // TPM1中通道1 (对应管理管脚为PTD3?,led4 // 通道0中断函数中闪烁led1。led3与led1同频率闪烁。 // 通道1中断函数中闪烁led2。led4与led2同频率闪烁。 #define LED1 PTDD_PTDD0 #define LED2 PTDD_PTDD1 #define LED1_dir PTDDD_PTDDD0 #define LED2_dir PTDDD_PTDDD1 /*************************************************************/ /* 初始化总线时钟PEE模式 */ /* 外部晶振频率为4MHz,总线频率16MHz */ /*************************************************************/ void INIT_MCG(void) { MCGC2=0x36; while(!MCGSC_OSCINIT); MCGC1=0xb8; while(MCGSC_IREFST); while(MCGSC_CLKST!=0b10); MCGC2_LP = 1; MCGC1 = 0x90; MCGC3 = 0x48; MCGC2_LP = 0; while(!MCGSC_PLLST); while(!MCGSC_LOCK); MCGC1 = 0x10; while(MCGSC_CLKST!=0b11); } /*************************************************************/ /* 初始化LED */ /*************************************************************/ void INIT_LED(void) { LED1_dir=1; //I/O方向为输出 LED1 = 0; LED2_dir=1; //I/O方向为输出 LED2 = 1; } /*************************************************************/ /* 初始化TPM1ch0 */ /*************************************************************/ void INIT_TPM1ch0(void) { TPM1SC = 0X0F;// TOF = 0; TOIE = 0; CPWMS = 0; CLKS[B:A] = 01( 总线速率时钟 ); PS = 111; // 分频系数128,溢出中断禁止,脉冲周期8us TPM1C0SC = 0X54; //CHnF = 0; CHnIE = 1(通道n中断允许);[MSnB:MSnA] = 01(输出比较) //[ELSnB:ELSnA] = 01【比较匹配时外部引脚翻转】 沿 电平控制位, TPM1C0V = 62500 + TPM1CNT; //比较输出的切换周期为0.5s } /*************************************************************/ /* 初始化TPM1ch1 */ /*************************************************************/ void INIT_TPM1ch1(void) { TPM1C1SC = 0X54; //工作模式为切换比较输出,允许输出比较中断; TPM1C1V = 15625+TPM1CNT; //比较输出的切换周期为0.125s } void main(void) { DisableInterrupts; SOPT1 = 0; INIT_MCG(); INIT_LED(); INIT_TPM1ch0(); INIT_TPM1ch1(); EnableInterrupts; while(1); } /*************************************************************/ /* TPM1ch0比较输出中断函数 */ /*************************************************************/ void interrupt 5 TPM1CH0_OUTPUT(void) { if(TPM1C0SC_CH0F == 1) //判断是否发生输出比较中断 { TPM1C0SC_CH0F = 0; //清除标志位 TPM1C0V = 62500+TPM1CNT; LED1 = ~LED1; //改变LED1的亮灭状态 } } /*************************************************************/ /* TPM1ch1比较输出中断函数 */ /*************************************************************/ void interrupt 6 TPM1CH1_OUTPUT(void) { if(TPM1C1SC_CH1F == 1) //判断是否发生输出比较中断 { TPM1C1SC_CH1F = 0; //清除标志位 TPM1C1V = 15625 + TPM1CNT; LED2 = ~LED2; //改变LED2的亮灭状态 } }
上一篇:飞思卡尔单片机学习记录(一)
史海拾趣
|
http://www.51icjm.com http://www.51icjm.com.cn 北京致芯科技是一家专业从事芯片解密和单片机解密技术研究的公司,主要领域包括:单片机解密、专用IC解密、芯片解密,PLD解密,CPLD解密、DSP解密等单片机开发服务、鉴定芯片型号。 部分解密的品 ...… 查看全部问答> |
|
现在基于OR1200的SOPC用了太多外围的器件(如Flash、SDRAM),限制了它在中、小规模嵌入式系统中的应用。 有个想法不知是否可行? 1)将程序的代码和常量放在FPGA片外的NOR Flash芯片中,变量使用FPGA片内的SRAM,省掉SDRAM芯片。 2)OR1200有指 ...… 查看全部问答> |
|
今天调试反激电源的时候发现一个问题: 4*1W的LED通电电流不变350MA,压降13.2V;随着通电时间的增加,电压逐渐降低到12.5V; 这种情况是不是可以解释为 :是不是 LED的阀门电压时随着温度的身高而降低; … 查看全部问答> |
|
今天很郁闷,话了很久写了个程序,就是按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4... 但是怎么只就显示第一个 到 第8个键呢,就是 是显示001 到081, 到案第十个键的时 ...… 查看全部问答> |
|
这些汇编器分别是哪些公司出的?有啥区别?那个最好? 80C51单片机常用的汇编器有:ASM51.EXE、A8051.EXE、MCS51.EXE和A51.EXE… 查看全部问答> |
|
最近做一个语音播放的东东,8KHz/16bits PCM 语音信号经过一个16bitPCM DAC 以8KHz的sampling rate playback.发现语音失真很严重,还伴随有噪音.人的语音都变调了很难听.小弟以前没做过语音相关的,不知道怎么解决?还望各位帮忙.   ...… 查看全部问答> |




