在线时间4 小时
UID359661
ST金币0
蝴蝶豆4
注册时间2012-5-19
初级会员
- 最后登录
- 2020-8-12
|
a0a.1 0b0c
各位大侠,
我在用STM8s103F2时遇到这样的问题。
TIM1的捕获用不了。同样的程序在105上运行得很好。
以下是我的程序。请大家给我点建议,
void Tim1CapInit(void)
{
/*时钟分频*/
TIM1->SCRH = 0x00;
TIM1->SCRL = 0x08;
/*失能捕获1*/
TIM1->CCER1 &= ~0x01;
/*CH1配置为输入,映射到TI1FP1上*/
TIM1->CCMR1 = (TIM1->CCMR1& (~(0x03 | 0x0F))) | 0x01;
/*低电平或者下降沿有效*/
TIM1->CCER1 |= 0x02;
/*使能捕获1*/
TIM1->CCER1 |= 0x1;
/*允许捕获溢出中断*/
TIM1->IER |= 0x02;
TIM1->IER |= 0x01;
/*启动定定时器1*/
TurnOnT1();
/*启用定时器*/
enableInterrupts();
//TIM1->CR1 |= 0x01;
}
/*定时器1捕获中断处理*/
@far @interrupt void T1_Capture(void )
{
if(0x02 == (TIM1->SR1 & 0x02))
{
TIM1->SR1 &= ~0xFF;
}
}
/*定时器1溢出中断处理*/
@far @interrupt void T1_OverFlow(void)
{
if(0x01 == (TIM1->SR1 & 0x01))
{
TIM1->SR1 &= ~0x01;
}
}
void main(void)
{
#ifdef STM8S105 /*105的通道1在C1*/
GPIO_Init(GPIOC,GPIO_PIN_1,GPIO_MODE_IN_FL_NO_IT);
#endif
#if STM8S103 /*103的通道1在C6*/
GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_IN_FL_NO_IT);
#endif
Tim1CapInit();
while (1);
}
|
|