mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-06-29 05:07:20 +08:00
feature(adc): add adc example
This commit is contained in:
55
examples/peripherals/adc/main/adc_example_main.c
Normal file
55
examples/peripherals/adc/main/adc_example_main.c
Normal file
@ -0,0 +1,55 @@
|
||||
/* adc example
|
||||
|
||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||
|
||||
Unless required by applicable law or agreed to in writing, this
|
||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "driver/adc.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
static const char *TAG = "adc example";
|
||||
|
||||
static void adc_task()
|
||||
{
|
||||
int x;
|
||||
uint16_t adc_data[100];
|
||||
|
||||
while (1) {
|
||||
if (ESP_OK == adc_read(&adc_data[0])) {
|
||||
ESP_LOGI(TAG, "adc read: %d\r\n", adc_data[0]);
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "adc read fast:\r\n");
|
||||
|
||||
if (ESP_OK == adc_read_fast(adc_data, 100)) {
|
||||
for (x = 0; x < 100; x++) {
|
||||
printf("%d\n", adc_data[x]);
|
||||
}
|
||||
}
|
||||
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
}
|
||||
}
|
||||
|
||||
void app_main()
|
||||
{
|
||||
// 1. init adc
|
||||
adc_config_t adc_config;
|
||||
|
||||
// Depend on menuconfig->Component config->PHY->vdd33_const value
|
||||
// When measuring system voltage(ADC_READ_VDD_MODE), vdd33_const must be set to 255.
|
||||
adc_config.mode = ADC_READ_TOUT_MODE;
|
||||
adc_config.clk_div = 8; // ADC sample collection clock = 80MHz/clk_div = 10MHz
|
||||
ESP_ERROR_CHECK(adc_init(&adc_config));
|
||||
|
||||
// 2. Create a adc task to read adc value
|
||||
xTaskCreate(adc_task, "adc_task", 1024, NULL, 5, NULL);
|
||||
}
|
Reference in New Issue
Block a user