Mit der Capture-Einstellung "TIM_ICPolarity_BothEdge" an Timer 4 Channel
2 (PB7) werden nur steigende Flanken erkannt, weil offenbar keiner der
Timer diese Möglichkeit hat:
stm32f10x_tim.c
1 | void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
|
2 | {
|
3 | ...
|
4 | if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) ||
|
5 | (TIMx == TIM4) ||(TIMx == TIM5))
|
6 | {
|
7 | assert_param(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity));
|
8 | }
|
9 | else
|
10 | {
|
11 | assert_param(IS_TIM_IC_POLARITY_LITE(TIM_ICInitStruct->TIM_ICPolarity));
|
12 | }
|
13 |
|
14 | ...
|
stm32f10x_tim.h
1 | ...
|
2 | #define TIM_ICPolarity_Rising ((uint16_t)0x0000)
|
3 | #define TIM_ICPolarity_Falling ((uint16_t)0x0002)
|
4 | #define TIM_ICPolarity_BothEdge ((uint16_t)0x000A)
|
5 | #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
|
6 | ((POLARITY) == TIM_ICPolarity_Falling))
|
7 | #define IS_TIM_IC_POLARITY_LITE(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
|
8 | ((POLARITY) == TIM_ICPolarity_Falling)|| \
|
9 | ((POLARITY) == TIM_ICPolarity_BothEdge))
|
10 | ...
|
Erstens: wo landet die Warnung der Library, dass dieser Trigger gar
nicht vorhanden ist?
Und: gibt es eine Möglichkeit, trotzdem auf beide Flanken zu reagieren
(jedes Mal umschalten - wie erkennt man die erste Flanke?)?