#include #include #include #include #include #include #include #define ADC_NODE DT_NODELABEL(adc1) #if !DT_NODE_HAS_STATUS(ADC_NODE, okay) #error "ADC1 not available; Enable it in a board overlay if needed." #endif static const struct device *const adc_dev = DEVICE_DT_GET(ADC_NODE); static uint16_t sample; // Channel Configuration static struct adc_channel_cfg ch1_cfg = { .gain = ADC_GAIN_1, .reference = ADC_REF_INTERNAL, .acquisition_time = ADC_ACQ_TIME_DEFAULT, .channel_id = 1, .differential = 0, }; static struct adc_sequence seq = { .channels = BIT(1), // Channel bitmap .buffer = &sample, .buffer_size = sizeof(sample), .resolution = 12, // 12-bit }; int main(void) { if(!device_is_ready(adc_dev)) { return 0; } // Configure the channel if(adc_channel_setup(adc_dev, &ch1_cfg) != 0) { return 0; } printk("\r\n[ADC] PA1(ADVC1_IN1) polling\r\n"); while (1) { int rc = adc_read(adc_dev, &seq); if(rc == 0) { uint16_t raw = sample; printk("ADC raw value = %u\r\n", raw); } k_sleep(K_MSEC(50)); } return 0; }