3. du musst den Pin auch als Alternate Function setzen:
1 | // GPIO
|
2 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
3 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
4 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //<<< wichtig!
|
5 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
6 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
7 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
8 | GPIO_Init(GPIOB, &GPIO_InitStructure);
|
9 | GPIO_PinAFConfig(GPIOB, GPIO_PinSource0, GPIO_AF_TIM3); //<<< wichtig!
|
2.
von welchem basis takt gehst du denn aus?
im anhang ist eine hilfestellung
ist vermutlich nicht ganz was du suchst aber es verschaft dir einen sehr
guten überblick über die verschiedenen Taktquellen des STM32F4
Wenn du den Basistakt dann weist lässt sich ja dann mithilfe des
Prescalers des jeweiligen Timers und der perioden variable ganz einfach
der takt festlegen, so viel mathe traue ich dir zu :)
1. wenn du die STM standardlib benutzt musst du erstmal den interrupt
vector konfigurieren
1 | NVIC_InitTypeDef NVIC_InitStructure;
|
2 | /* Enable the TIM1 global Interrupt */
|
3 | NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
|
4 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
5 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
6 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
7 | NVIC_Init(&NVIC_InitStructure);
|
anschließend schalltest du den Interraupt mit folgendem code an:
1 | /* Enable the CC2 Interrupt Request */
|
2 | TIM_ITConfig(TIM1, TIM_IT_CC2, ENABLE);
|
wenn der Interrupt eingeschaltet ist springt er die folgende Methode an:
1 | void TIM1_CC_IRQHandler(void)
|
2 | {
|
3 | /* Clear TIM1 Capture compare interrupt pending bit */
|
4 | TIM_ClearITPendingBit(TIM1, TIM_IT_CC2);
|
5 | }
|
die genaue bezeichnung der IRQ Handler Methoden findest du in der
startup_stm32f4xx.c Datei