cancel
Showing results for 
Search instead for 
Did you mean: 

STM8S Timer1 input capture issue

jf
Associate
Posted on May 17, 2016 at 17:30

Hello am working with the timer1 input capture of an STM8S103F3. No input is registered by the input capture module though I fed it with square waves from 10Hz all the way up to 1MHz. The same square wave registers properly in the input capture module of a pic micro. I have seen that the PC6 (TIM1 Channnel1) pin is set to TIM1 channel1 as an alternate function but I have not found anything helpful in the STM8S standard development library. I have pasted my code below in case anyone can help thanks:

#include ''stm8s.h''

void main()

{

CLK_DeInit();

CLK_HSICmd(ENABLE);

CLK_LSICmd(DISABLE);

CLK_HSECmd(DISABLE);

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);

GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);

CLK_CCOConfig(CLK_OUTPUT_CPUDIV32);

CLK_CCOCmd(ENABLE);

GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_IN_PU_NO_IT);

TIM1_DeInit();

CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1 , ENABLE);

TIM1_ICInit( TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING,TIM1_ICSELECTION_DIRECTTI,TIM1_ICPSC_DIV1, 0x00);

TIM1_SelectInputTrigger(TIM1_TS_TI1FP1);

TIM1_SelectSlaveMode(TIM1_SLAVEMODE_RESET);

TIM1_ITConfig(TIM1_IT_CC1,ENABLE);

TIM1_GenerateEvent(TIM1_EVENTSOURCE_CC1);

TIM1_ClearFlag(TIM1_FLAG_CC1);

TIM1_UpdateRequestConfig(TIM1_UPDATESOURCE_REGULAR);

TIM1_Cmd(ENABLE);

enableInterrupts();

while (1);

}

/***********Contents of stm8s_it.c*********************/

uint16_t Capture;

uint8_t Buf[10];

INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)

{

if(TIM1_GetITStatus(TIM1_IT_CC1)==SET)

{

Capture=TIM1_GetCapture1();

TIM1_ClearFlag(TIM1_IT_CC1);

}

}
0 REPLIES 0