MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / efm_accel_config

Function efm_accel_config

bsp/efm32/dev_accel.c:253–520  ·  view source on GitHub ↗

/ * @brief * Accelerometer configuration function * * @details * * @note * * @param[in] config * Configuration options * * @param[in] level_threshold * Level detection threshold * * @param[in] pulse_threshold * Pulse detection threshold * * @param[in] pulse_duration * Time window for 1st pulse * * @param[in] pulse_latency * Pulse latency Time * * @param[in] pulse_durati

Source from the content-addressed store, hash-verified

251 * Error code
252 ******************************************************************************/
253rt_err_t efm_accel_config(rt_uint32_t config,
254 rt_uint8_t level_threshold,
255 rt_uint8_t pulse_threshold,
256 rt_uint8_t pulse_duration,
257 rt_uint8_t pulse_latency,
258 rt_uint8_t pulse_duration2)
259{
260 rt_err_t ret;
261 rt_uint8_t buf[2];
262 rt_uint8_t mode, mctl_reg, ctl1_reg, ctl2_reg;
263
264 ret = RT_EOK;
265 mctl_reg = 0;
266 ctl1_reg = 0;
267 ctl2_reg = 0;
268
269 /* Modify MCTL */
270 mode = config & ACCEL_MASK_MODE;
271 switch (mode)
272 {
273 case ACCEL_MODE_STANDBY:
274 mctl_reg |= MCTL_MODE_STANDBY;
275 break;
276 case ACCEL_MODE_MEASUREMENT:
277 mctl_reg |= MCTL_MODE_MEASUREMENT;
278 break;
279 case ACCEL_MODE_LEVEL:
280 mctl_reg |= MCTL_MODE_LEVEL;
281 break;
282 case ACCEL_MODE_PULSE:
283 mctl_reg |= MCTL_MODE_PULSE;
284 break;
285 default:
286 return -RT_ERROR;
287 }
288
289 switch (config & ACCEL_MASK_RANGE)
290 {
291 case ACCEL_RANGE_8G:
292 mctl_reg |= MCTL_RANGE_8G;
293 break;
294 case ACCEL_RANGE_4G:
295 mctl_reg |= MCTL_RANGE_4G;
296 break;
297 case ACCEL_RANGE_2G:
298 mctl_reg |= MCTL_RANGE_2G;
299 break;
300 default:
301 return -RT_ERROR;
302 }
303
304 if ((mode == ACCEL_MODE_LEVEL) || (mode == ACCEL_MODE_PULSE))
305 {
306 mctl_reg |= MCTL_PIN_INT1;
307 }
308
309 /* Modify CTL1 */
310 if (config & ACCEL_INTPIN_INVERSE)

Callers 2

efm_accel_initFunction · 0.85
dev_accel.cFile · 0.85

Calls 7

efm32_irq_hook_registerFunction · 0.85
BITBAND_PeripheralFunction · 0.85
GPIO_IntConfigFunction · 0.50
NVIC_ClearPendingIRQFunction · 0.50
NVIC_SetPriorityFunction · 0.50
NVIC_EnableIRQFunction · 0.50
writeMethod · 0.45

Tested by

no test coverage detected