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_ICU9(ICU_CHANNEL_1);
133 return false;
134 case Gpio::A3:
135 RETURN_ICU9(ICU_CHANNEL_2);
136 return false;
137 case Gpio::A5:
138 RETURN_ICU2(ICU_CHANNEL_1);
139 return false;
140 case Gpio::A6:
141 RETURN_ICU3(ICU_CHANNEL_1);
142 RETURN_ICU13(ICU_CHANNEL_1);
143 return false;
144 case Gpio::A7:
145 RETURN_ICU3(ICU_CHANNEL_2);
146 RETURN_ICU14(ICU_CHANNEL_1);
147 return false;
148 case Gpio::A8:
149 RETURN_ICU1(ICU_CHANNEL_1);
150 return false;
151 case Gpio::A9:
152 RETURN_ICU1(ICU_CHANNEL_2);
153 return false;
154 case Gpio::A15:
155 RETURN_ICU2(ICU_CHANNEL_1);
156 return false;
157 case Gpio::B3:
158 RETURN_ICU2(ICU_CHANNEL_2);
159 return false;
160 case Gpio::B4:
161 RETURN_ICU3(ICU_CHANNEL_1);
162 return false;
163 case Gpio::B5:
164 RETURN_ICU3(ICU_CHANNEL_2);
165 return false;
166 case Gpio::B6:
167 RETURN_ICU4(ICU_CHANNEL_1);
168 return false;
169 case Gpio::B7:
170 RETURN_ICU4(ICU_CHANNEL_2);
171 return false;
172 case Gpio::B8:
173 RETURN_ICU10(ICU_CHANNEL_1);
174 return false;
175 case Gpio::B9:
176 RETURN_ICU11(ICU_CHANNEL_1);
177 return false;
178 case Gpio::B14:
179 RETURN_ICU12(ICU_CHANNEL_1);
180 return false;
181 case Gpio::B15:
182 RETURN_ICU12(ICU_CHANNEL_2);
183 return false;
184 case Gpio::C6:
185 RETURN_ICU3(ICU_CHANNEL_1);
186 RETURN_ICU8(ICU_CHANNEL_1);
187 return false;
188 case Gpio::C7:
189 RETURN_ICU3(ICU_CHANNEL_2);
190 RETURN_ICU8(ICU_CHANNEL_2);
191 return false;
192 case Gpio::D12:
193 RETURN_ICU4(ICU_CHANNEL_1);
194 return false;
195 case Gpio::D13:
196 RETURN_ICU4(ICU_CHANNEL_2);
197 return false;
198 case Gpio::E5:
199 RETURN_ICU9(ICU_CHANNEL_1);
200 return false;
201 case Gpio::E6:
202 RETURN_ICU9(ICU_CHANNEL_2);
203 return false;
204 case Gpio::E9:
205 RETURN_ICU1(ICU_CHANNEL_1);
206 return false;
207 case Gpio::E11:
208 RETURN_ICU1(ICU_CHANNEL_2);
209 return false;
210 case Gpio::E14:
211 RETURN_ICU1(ICU_CHANNEL_4);
212 return false;
213 case Gpio::F6:
214 RETURN_ICU10(ICU_CHANNEL_1);
215 return false;
216 case Gpio::F7:
217 RETURN_ICU11(ICU_CHANNEL_1);
218 return false;
219 case Gpio::F8:
220 RETURN_ICU13(ICU_CHANNEL_1);
221 return false;
222 case Gpio::F9:
223 RETURN_ICU14(ICU_CHANNEL_1);
224 return false;
225 case Gpio::H6:
226 RETURN_ICU12(ICU_CHANNEL_1);
227 return false;
228 case Gpio::H9:
229 RETURN_ICU12(ICU_CHANNEL_2);
230 return false;
231 case Gpio::H10:
232 RETURN_ICU5(ICU_CHANNEL_1);
233 return false;
234 case Gpio::H11:
235 RETURN_ICU5(ICU_CHANNEL_2);
236 return false;
237 case Gpio::I5:
238 RETURN_ICU8(ICU_CHANNEL_1);
239 return false;
240 case Gpio::I6:
241 RETURN_ICU8(ICU_CHANNEL_2);
242 return false;
243
244 default:
245 return false;
246 }
247
248 return false;
249}

Referenced by startSent(), and stopSent().

Here is the caller graph for this function:

Go to the source code of this file.