Hallo, Ich versuche meinen Timer 2 (TIM2) zu konfigurieren. Ich möchte gerne das dieser einen Interrupt nach 1ms genieriert. Ich nutze das SM3210E-Eval Board. Ich bin mir aber nicht so sicher ob ich hiermit richtig liege.... Auf Seite 13. sind die Taktsignale dargestellt. http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00253742.pdf Laut Dokument läuft die APB1 mit 32 MHZ aber mich stört dieser Teil: If (APB1 prescaler =1) x1 else x2 habe ich hier nun 32Mhz oder 72Mhz ? unten ist mein Code wo ich von 72 Mhz ausgehe
1 | // enable TIMER TIM2 system clock
|
2 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); |
3 | |
4 | |
5 | /* Enable the Timer2 Interrupt */
|
6 | NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); |
7 | |
8 | NVIC_InitStructure->NVIC_IRQChannel = TIM2_IRQn; // configure the Timer2 interrupts |
9 | NVIC_InitStructure->NVIC_IRQChannelPreemptionPriority = 3; // sets the priority group of the TIMER2 interrupts |
10 | NVIC_InitStructure->NVIC_IRQChannelSubPriority = 0; // set the subpriority inside the group |
11 | NVIC_InitStructure->NVIC_IRQChannelCmd = ENABLE; // TIMER2 interrupts are globally enabled |
12 | NVIC_Init(NVIC_InitStructure); |
13 | |
14 | /* Configure Timer which is every 1 ms active*/
|
15 | TIM_DeInit(TIM2); |
16 | TIM_TimeBaseStructInit(TIM_TimeBaseStructure); |
17 | |
18 | /* Time base configuration */
|
19 | TIM_TimeBaseStructure->TIM_Prescaler = 360 - 1; // 72 MHz / 360 = 200 khz |
20 | TIM_TimeBaseStructure->TIM_Period = 200 - 1; // (1/200khz) * 200 = 1 ms; |
21 | TIM_TimeBaseStructure->TIM_ClockDivision = TIM_CKD_DIV1; |
22 | TIM_TimeBaseStructure->TIM_CounterMode = TIM_CounterMode_Up; |
23 | TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); |
24 | |
25 | //TIM_PrescalerConfig(TIM2, 360-1 , TIM_PSCReloadMode_Immediate);
|
26 | |
27 | /* Enable TIM2 Update Interrupt */
|
28 | TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); |
29 | |
30 | /* Enable TIM2 */
|
31 | TIM_Cmd(TIM2,ENABLE); |