#ifndef __FML_ADC_H__ #define __FML_ADC_H__ #ifdef __cplusplus extern "C" { #endif //唤醒触发一次采样,3毫秒后触发一次采样,1秒后触发一次采样,3毫秒触发一次采样,1秒后触发一次采样 /*Includes ------------------------------------------------------*/ #include #include #include #include "sdk_common.h" #include "nrf_gpio.h" #include "SEGGER_RTT.h" #include "usr_config.h" /*Private macro ------------------------------------------------------------------------------------------------------------------------------------*/ #define FML_ADC_SAMPLE_POINT_0 0 //触发采样点0,单位ms,表明刚唤醒就采集 #define FML_ADC_SAMPLE_POINT_1 3 //触发采样点1,单位ms #define FML_ADC_SAMPLE_POINT_2 100 //触发采样点2,单位ms /*STRUCTION ----------------------------------------------------*/ typedef struct _fml_adc_all_channel_adc_value { int16_t channel_0_adc_value; int16_t channel_1_adc_value; int16_t channel_2_adc_value; int16_t channel_3_adc_value; int16_t channel_4_adc_value; int16_t channel_5_adc_value; int16_t channel_6_adc_value; int16_t channel_7_adc_value; } Fml_Adc_All_Channel_Adc_Value_t; //sample_point:采集时间点 //all_adc_value:所有通道的值 //尽量不要在回调里执行耗时很长的操作,最好就是只有设置通道的操作 typedef void (*fml_adc_sample_update_notify_callback)(uint32_t sample_point, Fml_Adc_All_Channel_Adc_Value_t all_adc_value); /*API -------------------------------------------------------*/ /** @brief 初始化adc功能模块 @param 无 @return 错误代码 - [out] -1失败,0成功 */ int fml_adc_Init(void); /** @brief adc采样更新通知回调注册 @param cb - [in] 回调函数注册 @return 错误代码 - [out] -1失败,0成功 */ int fml_adc_sample_update_notify_register(fml_adc_sample_update_notify_callback cb); /** @brief adc读值 @param channel - [in] 需要读取的通道 @param value - [out] 返回通道的值 @return 错误代码 - [out] -1失败,0成功 */ int fml_adc_get_value(uint32_t channel,int16_t *value); /** @brief 设置ADC通道 @param pin - [in] 需要设置的引脚 @param channel - [in] 需要设置的通道 @param pin_pull - [in] 需要设置的通道上下拉 @return 错误代码 - [out] -1失败,0成功 */ int fml_adc_set_pin_channel(uint32_t pin, uint32_t channel, nrf_gpio_pin_pull_t pin_pull); /** @brief 移除ADC通道 @param pin - [in] 需要移除的引脚 @param channel - [in] 需要移除的通道 @return 错误代码 - [out] -1失败,0成功 */ int fml_adc_remove_pin_channel(uint32_t pin, uint32_t channel); #ifdef __cplusplus } #endif #endif