36
36
#include "PeripheralPins.h"
37
37
38
38
// These variables are used for the "free" function
39
- static int pa4_used = 0 ;
40
- static int pa5_used = 0 ;
39
+ static int channel1_used = 0 ;
40
+ #if defined(DAC_CHANNEL_2 )
41
+ static int channel2_used = 0 ;
42
+ #endif
41
43
42
44
#if STATIC_PINMAP_READY
43
45
#define ANALOGOUT_INIT_DIRECT analogout_init_direct
@@ -108,14 +110,14 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
108
110
sConfig .DAC_OutputSwitch = DAC_OUTPUTSWITCH_ENABLE ;
109
111
#endif
110
112
111
- if (pinmap -> pin == PA_4 ) {
112
- pa4_used = 1 ;
113
+ if (obj -> channel == DAC_CHANNEL_1 ) {
114
+ channel1_used = 1 ;
113
115
}
114
-
115
- if (pinmap -> pin == PA_5 ) {
116
- pa5_used = 1 ;
116
+ #if defined( DAC_CHANNEL_2 )
117
+ if (obj -> channel == DAC_CHANNEL_2 ) {
118
+ channel2_used = 1 ;
117
119
}
118
-
120
+ #endif
119
121
if (HAL_DAC_ConfigChannel (& obj -> handle , & sConfig , obj -> channel ) != HAL_OK ) {
120
122
error ("HAL_DAC_ConfigChannel failed" );
121
123
}
@@ -137,21 +139,26 @@ void analogout_init(dac_t *obj, PinName pin)
137
139
void analogout_free (dac_t * obj )
138
140
{
139
141
// Reset DAC and disable clock
140
- if (obj -> pin == PA_4 ) {
141
- pa4_used = 0 ;
142
+ if (obj -> channel == DAC_CHANNEL_1 ) {
143
+ channel1_used = 0 ;
142
144
}
143
- if (obj -> pin == PA_5 ) {
144
- pa5_used = 0 ;
145
+ #if defined(DAC_CHANNEL_2 )
146
+ if (obj -> channel == DAC_CHANNEL_2 ) {
147
+ channel2_used = 0 ;
145
148
}
146
-
147
- if ((pa4_used == 0 ) && (pa5_used == 0 )) {
149
+ #endif
150
+ if ((channel1_used == 0 )
151
+ #if defined(DAC_CHANNEL_2 )
152
+ & & (channel2_used == 0 )
153
+ #endif
154
+ ) {
148
155
__HAL_RCC_DAC1_FORCE_RESET ();
149
156
__HAL_RCC_DAC1_RELEASE_RESET ();
150
157
__HAL_RCC_DAC1_CLK_DISABLE ();
151
158
}
152
159
153
160
#if defined(DAC2 )
154
- if (obj -> pin == PA_6 ) {
161
+ if (obj -> dac == DAC_2 ) {
155
162
__HAL_RCC_DAC2_FORCE_RESET ();
156
163
__HAL_RCC_DAC2_RELEASE_RESET ();
157
164
__HAL_RCC_DAC2_CLK_DISABLE ();
0 commit comments