请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2510 我正在使用计时器1通道2作为输出比较、以便在 P1_0上每5秒发出一个脉冲。
我对终端 countd 进行编程以获得精度、但当我启用 P1_0的外设功能时、我在示波器上测量已设置的行、直到达到终端计数时才保持低电平。
当达到终端计数时、它会将脉冲设置为编程设置、但我不知道为什么在启用外设后已经设置了它?
在手册中、说明 P1_0没有上拉或下拉功能、并且我没有连接到引脚的阻抗。
void main (void) { EA = 0;//禁用所有中断 P1SEL &=~(BIT0); //将 P1_0设置为通用 I/O P1DIR |=(BIT0); //将 P1_0设置为输出 P1INP &=~(BIT0 | BIT2 | BIT4 | BIT4 | BIT5 | BIT7); //将 P1_0设置为上拉/下拉 P2INP &=~(P2INP_PDUP1); //将 P1_0设置为上拉 P1_0 = 0; // Timer1上的1ms 中断(具有最高优先级) T1CTL &=~T1CTL_CH2IF; //清除计时器1通道2中断标志 T1CTL &=~T1CTL_OVFIF; //清除计时器1溢出中断标志 T1CCTL2 &=~T1CCTL2_IM; //放捆定时器1通道2中断屏蔽 OVFIM = 1; //启用定时器1溢出中断屏蔽 P2DIR =(P2DIR &~P2DIR_PRIP0)| P2DIR_PRIP0_2; //如果 PERCFG 将2个外设分配给同一引脚(定时器1通道0和1 - USART1) 、则采用之前的顺序 P2SEL |= P2SEL_PRI0P1; //为使用端口1 PERCFG 的 Timer 1优先于 USART 0 |= PERCFG_T1CFG; // Timer1到备用位置2、P1_2 T1CCTL0 =(T1CCTL0 &~T1CCTL0_CMP)| T1CCTL0_MODE | T1C0_SET_ON_CMP;//将计时器1通道0设置为比较模式并在比较 T1CC0L = 0xc7时设置输出; //设置定时器1通道0比较值低字节 T1CC0H = 0x32; //设置计时器1通道0比较值高字节 T1CCTL2 =(T1CCTL2 &~T1CCTL2_CMP)| T1CCTL2_MODE | T1C2_SET_ON_CMP;//设置计时器1通道2以比较模式并设置比较 T1CTL =(T1CTL &~(T1CTL)| T1CTL_DIV_MODE | T1CTL 模块模式 //首次挂起定时器1操作并清除预分频器、接下来设置为模操作并将节拍频率除以1 T1IE = 1; //启用定时器1中断使能 EA = 1;//使能所有中断 while (1) { ; } }_interrupt void Timer1_ISR (void) { if (T1CTL 和 T1CTL_OVFIF) { //保持简单! T1CTL =(~T1CTL_OVFIF & 0xF0)|(T1CTL & 0x0F); timeTicker++; if (nextSyncReceivedTime.fraction > 6500)// 13000个周期=1ms { if (timesticker =nextSyncReceivedTime.time) { //出于某种原因,该行在该代码之后也会变为高电平(不需要) P1SEL |= BIT0; // P1_0至外设功能(定时器1 CH 2输出、在下一个中断时设置输出) T1CCTL2 =(T1CCTL2 &~T1CCTL2_CMP)| T1CCTL2_MODE | T1C2_SET_ON_CMP;//将计时器1通道2设置为比较模式并设置比较上的输出 T1CC2L =(uint8)(nextSyncReceivedTime.fraction & 0x00ff); //设置定时器1通道2比较值低字节 T1CC2H =(uint8)((nextSyncReceivedTime.fraction >> 8)& 0x00ff); //设置计时器1通道2比较值高字节 timeTickClearComparePulseBeforeThisTimeTick = timeTicker + 5; } } if (timeTickClearComparePulseBeforeThisTimeTick &&(timeTicker >= timeTickClearComparePulseBeforeThisTimeTick)) { //启用 I/O 功能的计时器 P1SEL &=~(BIT0); // P1_0至通用 I/O (在此中断期间设置输出) P1_0 = 0; } } }
任何帮助都是很好的。