TIM2 in STM32F100C8
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2011-06-30 1:25 AM
Posted on June 30, 2011 at 10:25
I m trying to use TIM2 as a general purpose timer to generate an interrupt at every 10mS.
void Timer2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 10; TIM_TimeBaseStructure.TIM_Prescaler = 36000; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); /* TIM IT disable */ TIM_Cmd(TIM2, DISABLE); /* TIM2 disable counter */ } void RCC_Configuration(void) { RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); // Enable HSE while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_0); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); // PCLK2 = HCLK RCC_PCLK1Config(RCC_HCLK_Div2); // PCLK1 = HCLK/2 RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div1); RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_3); RCC_PLLCmd(ENABLE); // Enable PLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_USART1 , ENABLE); RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2 | RCC_APB1Periph_USART3 | RCC_APB1Periph_TIM2, ENABLE); } I have enabled the timer interrupt also. The above routine doesnt generate an interupt exactly at 10mS. My external crystal connected is 8MHz. And the SYSCLK is configured as PLLCLK which is operating at 24MHz. I am not clear how the TIM_PERIOD and TIM_Prescaler are calculated. As the above example is provided by the STM FAE. And what is procedure to set a timer as GP Timer?
This discussion is locked. Please start a new topic to ask your question.
10 REPLIES 10
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2011-07-04 6:32 AM
Posted on July 04, 2011 at 15:32
Any error in the above posted code?
Nothing that looks particularly fatal. You might want to make your counter variables volatile. And do a >= comparison on both in case the serial output causes you to miss an interrupt/count. You need to attach a complete/freestanding project that will actually compile and run.
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Up vote any posts that you find helpful, it shows what's working..

- « Previous
-
- 1
- 2
- Next »