rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Functions
stm32_icu.cpp File Reference

Detailed Description

Port implementation for the STM32 timer units in ICU mode found on the STM32F4 and STM32F7.

Date
October 20, 2022
Author
Andrey Gusakov, (c) 2022
Andrey Belomutskiy, (c) 2012-2020

Definition in file stm32_icu.cpp.

Functions

bool getIcuParams (brain_pin_e hwPin, iomode_t *af_ptr, ICUDriver **icu_ptr, icuchannel_t *channel_ptr, uint32_t *clock_ptr)
 

Function Documentation

◆ getIcuParams()

bool getIcuParams ( brain_pin_e  hwPin,
iomode_t af_ptr,
ICUDriver **  icu_ptr,
icuchannel_t *  channel_ptr,
uint32_t *  clock_ptr 
)

ChibiOS limitation is that only channels #1 and #2 could be used for input capture Could this be unified with getConfigForPin() method?

Definition at line 122 of file stm32_icu.cpp.

122 {
123 switch (hwPin) {
124 case Gpio::A0:
125 RETURN_ICU5(ICU_CHANNEL_1);
126 return false;
127 case Gpio::A1:
128 RETURN_ICU2(ICU_CHANNEL_2);
129 RETURN_ICU5(ICU_CHANNEL_2);
130 return false;
131 case Gpio::A2:
132 RETURN_ICU2(ICU_CHANNEL_3);
133 RETURN_ICU5(ICU_CHANNEL_3);
134 RETURN_ICU9(ICU_CHANNEL_1);
135 return false;
136 case Gpio::A3:
137 RETURN_ICU2(ICU_CHANNEL_4);
138 RETURN_ICU5(ICU_CHANNEL_4);
139 RETURN_ICU9(ICU_CHANNEL_2);
140 return false;
141 case Gpio::A6:
142 RETURN_ICU3(ICU_CHANNEL_1);
143 RETURN_ICU13(ICU_CHANNEL_1);
144 return false;
145 case Gpio::A7:
146 RETURN_ICU3(ICU_CHANNEL_2);
147 RETURN_ICU14(ICU_CHANNEL_1);
148 return false;
149 case Gpio::A8:
150 RETURN_ICU1(ICU_CHANNEL_1);
151 return false;
152 case Gpio::A9:
153 RETURN_ICU1(ICU_CHANNEL_2);
154 return false;
155 case Gpio::A10:
156 RETURN_ICU1(ICU_CHANNEL_3);
157 return false;
158 case Gpio::A11:
159 RETURN_ICU1(ICU_CHANNEL_4);
160 return false;
161 case Gpio::A15:
162 RETURN_ICU2(ICU_CHANNEL_1);
163 return false;
164 case Gpio::B0:
165 RETURN_ICU3(ICU_CHANNEL_3);
166 return false;
167 case Gpio::B1:
168 RETURN_ICU3(ICU_CHANNEL_4);
169 return false;
170 case Gpio::B3:
171 RETURN_ICU2(ICU_CHANNEL_2);
172 return false;
173 case Gpio::B4:
174 RETURN_ICU3(ICU_CHANNEL_1);
175 return false;
176 case Gpio::B5:
177 RETURN_ICU3(ICU_CHANNEL_2);
178 return false;
179 case Gpio::B6:
180 RETURN_ICU4(ICU_CHANNEL_1);
181 return false;
182 case Gpio::B7:
183 RETURN_ICU4(ICU_CHANNEL_2);
184 return false;
185 case Gpio::B8:
186 RETURN_ICU3(ICU_CHANNEL_3);
187 RETURN_ICU10(ICU_CHANNEL_1);
188 return false;
189 case Gpio::B9:
190 RETURN_ICU3(ICU_CHANNEL_4);
191 RETURN_ICU11(ICU_CHANNEL_1);
192 return false;
193 case Gpio::B10:
194 RETURN_ICU2(ICU_CHANNEL_3);
195 return false;
196 case Gpio::B11:
197 RETURN_ICU2(ICU_CHANNEL_4);
198 return false;
199 case Gpio::B14:
200 RETURN_ICU12(ICU_CHANNEL_1);
201 return false;
202 case Gpio::B15:
203 RETURN_ICU12(ICU_CHANNEL_2);
204 return false;
205 case Gpio::C6:
206 RETURN_ICU3(ICU_CHANNEL_1);
207 RETURN_ICU8(ICU_CHANNEL_1);
208 return false;
209 case Gpio::C7:
210 RETURN_ICU3(ICU_CHANNEL_2);
211 RETURN_ICU8(ICU_CHANNEL_2);
212 return false;
213 case Gpio::C8:
214 RETURN_ICU3(ICU_CHANNEL_3);
215 RETURN_ICU8(ICU_CHANNEL_3);
216 return false;
217 case Gpio::C9:
218 RETURN_ICU3(ICU_CHANNEL_4);
219 RETURN_ICU8(ICU_CHANNEL_4);
220 return false;
221 case Gpio::D12:
222 RETURN_ICU4(ICU_CHANNEL_1);
223 return false;
224 case Gpio::D13:
225 RETURN_ICU4(ICU_CHANNEL_2);
226 return false;
227 case Gpio::D14:
228 RETURN_ICU4(ICU_CHANNEL_3);
229 return false;
230 case Gpio::D15:
231 RETURN_ICU4(ICU_CHANNEL_4);
232 return false;
233 case Gpio::E5:
234 RETURN_ICU9(ICU_CHANNEL_1);
235 return false;
236 case Gpio::E6:
237 RETURN_ICU9(ICU_CHANNEL_2);
238 return false;
239 case Gpio::E9:
240 RETURN_ICU1(ICU_CHANNEL_1);
241 return false;
242 case Gpio::E11:
243 RETURN_ICU1(ICU_CHANNEL_2);
244 return false;
245 case Gpio::E13:
246 RETURN_ICU1(ICU_CHANNEL_3);
247 return false;
248 case Gpio::E14:
249 RETURN_ICU1(ICU_CHANNEL_4);
250 return false;
251 case Gpio::F6:
252 RETURN_ICU10(ICU_CHANNEL_1);
253 return false;
254 case Gpio::F7:
255 RETURN_ICU11(ICU_CHANNEL_1);
256 return false;
257 case Gpio::F8:
258 RETURN_ICU13(ICU_CHANNEL_1);
259 return false;
260 case Gpio::F9:
261 RETURN_ICU14(ICU_CHANNEL_1);
262 return false;
263 case Gpio::H6:
264 RETURN_ICU12(ICU_CHANNEL_1);
265 return false;
266 case Gpio::H9:
267 RETURN_ICU12(ICU_CHANNEL_2);
268 return false;
269 case Gpio::H10:
270 RETURN_ICU5(ICU_CHANNEL_1);
271 return false;
272 case Gpio::H11:
273 RETURN_ICU5(ICU_CHANNEL_2);
274 return false;
275 case Gpio::H12:
276 RETURN_ICU5(ICU_CHANNEL_3);
277 return false;
278 case Gpio::I0:
279 RETURN_ICU5(ICU_CHANNEL_4);
280 return false;
281 case Gpio::I2:
282 RETURN_ICU8(ICU_CHANNEL_4);
283 return false;
284 case Gpio::I5:
285 RETURN_ICU8(ICU_CHANNEL_1);
286 return false;
287 case Gpio::I6:
288 RETURN_ICU8(ICU_CHANNEL_2);
289 return false;
290 case Gpio::I7:
291 RETURN_ICU8(ICU_CHANNEL_3);
292 return false;
293
294 default:
295 return false;
296 }
297
298 return false;
299}

Referenced by startSent(), and stopSent().

Here is the caller graph for this function:

Go to the source code of this file.