
我用定时器作为红外发码脉宽控制用,STM8S207定时器分频后定时不准,定时器1或2都不行。下面是我的红外发码程序;搞了好久了都不行。 TIM2->SR1&=0xF8; TIM2->IER=0X01; TIM2->CCER1=0x00; TIM2->CCER2=0x00; TIM2->CCMR2=0x00; //TIM2-> ![]() //TIM2->EGR=0x01; sentf=1; for(i=0;i>8); TEMPL=(unsigned char)(dumm&0x00ff); TIM2->CNTRH=TEMPH; TIM2->CNTRL=TEMPL; if(ir_sentf) { ////TIM3->EGR=0x01; //TIM3->CCER1=0x00; IR_OUT=1; ir_sentf=0; } else { //TIM3->EGR=0x01; //TIM3->CCER1=0x30; IR_OUT=0; ir_sentf=1; } TIM2->SR1=0; enableInterrupts(); TIM2->CR1=0X09; IWDG->KR = 0xAA; nop(); sentf1=0; while(!sentf1) { nop(); } TIM2->SR1&=0xFE; disableInterrupts(); //TIM2->CR1=0x08; } 下面这个是定时器2的更新中断处理 @near @interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ if(TIM2->SR1&0x01) { TIM2->SR1&=0xfe; if(sentf) { sentf1=1; } } //enableInterrupts(); return; } |
片内晶振吗?这个是有偏差的。 |
如果频率偏差是固定偏大或者偏小。。那应该是内部时钟偏差造成的。 |
学习一下。。。楼主解决问题了吗? |
我的903k3实测过一次定时溢出处理间隔最短是10us级别的,曾经我在10us级别的定时中断里写了很多赋值判断语句,导致定时严重偏差,最后只剩下3个赋值语句,删掉了其他判断语句才定时正常。楼主可以试试中断计数,闪烁LED灯看看定时准不准。 |
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
求一个STM8S207例程
初次接触STM8,请问在STVD中,为什么这个Struct会报错
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN