Charles Andre
/
Register_level_analog
some success, still errors
main.cpp@108:b8d05666d95f, 2019-11-28 (annotated)
- Committer:
- candre97
- Date:
- Thu Nov 28 22:26:38 2019 +0000
- Revision:
- 108:b8d05666d95f
- Parent:
- 102:780b4ecac614
- Child:
- 109:20827b1e5195
working for wrong I/O number, just gotta fix channel and other stuff. Maybe can init GPIO as analog input using API and then just read using registers.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 82:abf1b1785bd7 | 1 | /* mbed Microcontroller Library |
mbed_official | 82:abf1b1785bd7 | 2 | * Copyright (c) 2018 ARM Limited |
mbed_official | 82:abf1b1785bd7 | 3 | * SPDX-License-Identifier: Apache-2.0 |
mbed_official | 82:abf1b1785bd7 | 4 | */ |
mbed_official | 82:abf1b1785bd7 | 5 | |
Jonathan Austin |
0:2757d7abb7d9 | 6 | #include "mbed.h" |
mbed_official | 100:ec006d6f3cb6 | 7 | #include "platform/mbed_thread.h" |
mbed_official | 82:abf1b1785bd7 | 8 | #include "stats_report.h" |
candre97 | 102:780b4ecac614 | 9 | #include <AnalogIn.h> |
candre97 | 102:780b4ecac614 | 10 | #include <AnalogOut.h> |
Jonathan Austin |
0:2757d7abb7d9 | 11 | |
candre97 | 108:b8d05666d95f | 12 | #include "stm32l1xx_hal.h" |
candre97 | 108:b8d05666d95f | 13 | #include "stm32l1xx_hal_def.h" |
candre97 | 108:b8d05666d95f | 14 | #include "stm32l1xx_hal_adc_ex.h" |
candre97 | 108:b8d05666d95f | 15 | |
candre97 | 102:780b4ecac614 | 16 | AnalogOut v_src(GPIO0); |
candre97 | 102:780b4ecac614 | 17 | AnalogIn therm(GPIO2); |
candre97 | 102:780b4ecac614 | 18 | |
candre97 | 102:780b4ecac614 | 19 | #define SLEEP_TIME 50 // (msec) |
candre97 | 102:780b4ecac614 | 20 | #define PRINT_AFTER_N_LOOPS 20 |
Jonathan Austin |
0:2757d7abb7d9 | 21 | |
candre97 | 108:b8d05666d95f | 22 | |
candre97 | 108:b8d05666d95f | 23 | static void SystemClock_Config(void) |
candre97 | 108:b8d05666d95f | 24 | { |
candre97 | 108:b8d05666d95f | 25 | |
candre97 | 108:b8d05666d95f | 26 | } |
candre97 | 108:b8d05666d95f | 27 | |
candre97 | 102:780b4ecac614 | 28 | void ConfigureADC() |
candre97 | 102:780b4ecac614 | 29 | { |
candre97 | 102:780b4ecac614 | 30 | |
candre97 | 108:b8d05666d95f | 31 | |
candre97 | 108:b8d05666d95f | 32 | |
candre97 | 102:780b4ecac614 | 33 | } |
mbed_official | 88:bea4f2daa48c | 34 | |
Jonathan Austin |
1:846c97078558 | 35 | // main() runs in its own thread in the OS |
mbed_official | 82:abf1b1785bd7 | 36 | int main() |
mbed_official | 82:abf1b1785bd7 | 37 | { |
candre97 | 108:b8d05666d95f | 38 | SystemInit(); |
candre97 | 108:b8d05666d95f | 39 | /* Setup GPIO for LEDs */ |
candre97 | 108:b8d05666d95f | 40 | RCC->APB2ENR |= 1 << 6; /* Enable GPIOE clock */ |
candre97 | 108:b8d05666d95f | 41 | |
candre97 | 108:b8d05666d95f | 42 | /* Setup and initialize ADC converter */ |
candre97 | 108:b8d05666d95f | 43 | RCC->APB2ENR |= 1 << 9; /* Enable ADC1 clock */ |
candre97 | 108:b8d05666d95f | 44 | //GPIOC->CRL &= 0xFFF0FFFF; /* Configure PC4 as ADC.14 input */ |
candre97 | 108:b8d05666d95f | 45 | ADC1->SQR1 = 0x00000000; /* Regular channel 1 conversion */ |
candre97 | 108:b8d05666d95f | 46 | ADC1->SQR2 = 0x00000000; /* Clear register */ |
candre97 | 108:b8d05666d95f | 47 | ADC1->SQR3 = 14 << 0; /* SQ1 = channel 14 */ |
candre97 | 108:b8d05666d95f | 48 | ADC1->SMPR1 = 5 << 12; /* Channel 14 sample time is 55.5 cyc */ |
candre97 | 108:b8d05666d95f | 49 | ADC1->SMPR2 = 0x00000000; /* Clear register */ |
candre97 | 108:b8d05666d95f | 50 | ADC1->CR1 = 1 << 8; /* Scan mode on */ |
candre97 | 108:b8d05666d95f | 51 | ADC1->CR2 = (1 << 20) | /* Enable external trigger */ |
candre97 | 108:b8d05666d95f | 52 | (7 << 17) | /* EXTSEL = SWSTART */ |
candre97 | 108:b8d05666d95f | 53 | (1 << 1) | /* Continuous conversion */ |
candre97 | 108:b8d05666d95f | 54 | (1 << 0) ; /* ADC enable */ |
candre97 | 108:b8d05666d95f | 55 | ADC1->CR2 |= 1 << 3; /* Initialize calibration registers */ |
candre97 | 108:b8d05666d95f | 56 | while (ADC1->CR2 & (1 << 3)); /* Wait for initialization to finish */ |
candre97 | 108:b8d05666d95f | 57 | ADC1->CR2 |= 1 << 2; /* Start calibration */ |
candre97 | 108:b8d05666d95f | 58 | while (ADC1->CR2 & (1 << 2)); /* Wait for calibration to finish */ |
candre97 | 108:b8d05666d95f | 59 | ADC1->CR2 |= 1 << 22; /* Start first conversion */ |
Jonathan Austin |
0:2757d7abb7d9 | 60 | } |