Skip to content

Commit 1f825c1

Browse files
LMESTMadbridge
authored andcommitted
STM32: make PWM driver into a common file
The pwmout driver is very similar for each STM32 family. The only family specific part is defined in pwmout_device.h file. It mainly contains few specific information: - The mapping of PWM/TIMERS to APB1 or APB2 so that we can get the clock - The clock calculation uses the right APB clock, which was sometimes not the case before and could have lead to errors in case dividers were enabled on APB clock settings. This case is now covered. - Inactivation of inverted support on feaw families
1 parent 0789c24 commit 1f825c1

File tree

19 files changed

+842
-1924
lines changed

19 files changed

+842
-1924
lines changed

targets/TARGET_STM/TARGET_STM32F0/pwmout_api.c

Lines changed: 0 additions & 214 deletions
This file was deleted.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/* mbed Microcontroller Library
2+
*******************************************************************************
3+
* Copyright (c) 2017, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions are met:
8+
*
9+
* 1. Redistributions of source code must retain the above copyright notice,
10+
* this list of conditions and the following disclaimer.
11+
* 2. Redistributions in binary form must reproduce the above copyright notice,
12+
* this list of conditions and the following disclaimer in the documentation
13+
* and/or other materials provided with the distribution.
14+
* 3. Neither the name of STMicroelectronics nor the names of its contributors
15+
* may be used to endorse or promote products derived from this software
16+
* without specific prior written permission.
17+
*
18+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
*******************************************************************************
29+
*/
30+
#ifndef MBED_PWMOUT_DEVICE_H
31+
#define MBED_PWMOUT_DEVICE_H
32+
33+
#include "cmsis.h"
34+
35+
#ifdef __cplusplus
36+
extern "C" {
37+
#endif
38+
39+
#ifdef DEVICE_PWMOUT
40+
41+
typedef enum {
42+
PWMOUT_ON_APB1 = 0,
43+
PWMOUT_UNKNOWN = 1
44+
} PwmoutApb;
45+
46+
/* Structure to describe Timers to APB */
47+
typedef struct pwm_apb_map {
48+
PWMName pwm; // an index entry for each EXIT line
49+
PwmoutApb pwmoutApb;
50+
} pwm_apb_map_t;
51+
52+
/* there is only 1 APB clock in F0 family */
53+
#define PWMOUT_APB2_NOT_SUPPORTED
54+
55+
static const pwm_apb_map_t pwm_apb_map_table[] =
56+
{
57+
#if defined(TIM2_BASE)
58+
{PWM_2, PWMOUT_ON_APB1},
59+
#endif
60+
#if defined(TIM3_BASE)
61+
{PWM_3, PWMOUT_ON_APB1},
62+
#endif
63+
#if defined(TIM14_BASE)
64+
{PWM_14, PWMOUT_ON_APB1},
65+
#endif
66+
#if defined(TIM1_BASE)
67+
{PWM_1, PWMOUT_ON_APB1},
68+
#endif
69+
#if defined(TIM15_BASE)
70+
{PWM_15, PWMOUT_ON_APB1},
71+
#endif
72+
#if defined(TIM16_BASE)
73+
{PWM_16, PWMOUT_ON_APB1},
74+
#endif
75+
#if defined(TIM17_BASE)
76+
{PWM_17, PWMOUT_ON_APB1},
77+
#endif
78+
{(PWMName) 0, PWMOUT_UNKNOWN}
79+
};
80+
81+
#endif // DEVICE_PWMOUT
82+
83+
#endif

0 commit comments

Comments
 (0)