Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "adc.h"
- #include "../drivers.h"
- #include <stm32f0xx.h>
- static const TPin adcX = {PA, 1}; //
- static const TPin adcY = {PA, 4}; //
- // ADC: Ch.1, Ch.4 [Remap SYSCFG_CFGR1]
- // Массив для результатов измерений
- uint16_t ADCRes[2];
- void adc_InitDMA(void)
- {
- // Включим тактирование DMA
- RCC->AHBENR |= RCC_AHBENR_DMAEN;
- DMA1_Channel1->CNDTR = 2;
- DMA1_Channel1->CPAR = (uint32_t)&ADC1->DR;
- DMA1_Channel1->CMAR = (uint32_t)&ADCRes[0];
- DMA1_Channel1->CCR = DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_EN | DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_0;
- ADC1->CFGR1 |= ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG; // DMA en, circ
- }
- // АЦП
- void adc_Init(void)
- {
- RCC->APB2ENR |= RCC_APB2ENR_ADCEN;
- gp_Analog(&adcX);
- gp_Analog(&adcY);
- ADC1->CR |= ADC_CR_ADEN;
- ADC1->CFGR1 |= ADC_CFGR1_CONT;
- ADC1->CHSELR = ADC_CHSELR_CHSEL1 | ADC_CHSELR_CHSEL4;
- ADC1->CR |= ADC_CR_ADSTART;
- ADC1->SMPR = (1 << (3 * 1)) | (1 << (3 * 4)); // 28 cycles ch1
- adc_InitDMA();
- }
- int adc_GetX(void)
- {
- return ADCRes[0];
- }
- int adc_GetY(void)
- {
- return ADCRes[1];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement