Ярлыки

_GetPixelIndex (1) _SetPixelIndex (1) 3-phase (1) 800x480 (1) АЦП (1) генератор (1) синхронный усилитель (2) структура (1) учебный курс (1) шаговый двигатель (1) ШИМ (2) accert (1) AD7608 (1) AD8429 (1) ADC (5) amplifer (1) arccos (1) arcsin (1) arctang (2) arctg (3) ARM (2) arm_sqrt_q15 (2) assembler (6) ASSERT (1) atan (2) bit (1) Bitband (1) boot (3) bootlloader (1) BUTTON (1) C (5) C# (1) CAN (2) CC2530 (5) CMSIS (4) command (1) Cordic (1) Core746I (1) CubeMX (4) DBGMCU (2) debug (2) debug.ini (1) delegate (1) Digital Potentiometers (1) DigitalPOT (1) Discovery (1) DMA (9) DMA2D (1) DSP (1) DSP library (1) DWT (1) EFM32 (5) EmWin (9) EXTI (1) FATFS (1) FMC (2) FreeRTOS (2) gl868-dual cmux (1) GPIO (4) GUI (2) GUIBuilder (1) GUIDRV_CompactColor_16 (1) HAL (3) HappyGecko (1) Hard Fault (2) heap (1) I2C (1) ID (1) ILI9320 (1) ILI9325 (1) Initialisation (1) InitLTDC (1) Instrumentithion (1) Interrupt (4) ITR (1) JTAG (1) Keil (5) LCDConf (2) lock-in (1) LTCD (1) LTDC (3) main (1) memory (1) MINI_STM32 Revision 01 (1) nBoot0 (1) NVIC (1) OnePulse (2) OSAL (4) pack (1) phase (1) printf (3) Pulse (1) PWM (12) RCC (2) RCR (1) Register (1) RESET (2) RS232 (3) RSS (1) RTC (3) RTOS-RTX (1) RTT (1) RTX-RTOS (1) SDCard (1) SDRAM (6) Segger (2) SPI (3) sqrt (3) SSD1298 (1) SSD1963 (1) Standart Peripherial Library (3) STANDBAY (1) startup (1) STemWin (8) stepper motor (1) STlink (2) STM32 (17) STM32429ZI (1) STM32Cube (1) STM32DBG.IN (1) STM32F (28) STM32F0 (4) STM32F1 (13) STM32F4 (10) STM32F4 Discovery (1) STM32F407ZG (1) STM32F429 (2) STM32F746 (1) STOP (1) string (1) struct (1) SWD (1) SWD JTAG (1) Synhronization (1) system_stm32f4xx.c (1) SystemInit (1) SysTick (1) task (4) telit (1) TIM (27) typedef (1) UART (1) USART (9) viewer (2) WM_PAINT (1) Z-stack (5) ZigBee (5)

пятница, 21 октября 2016 г.

STM32F ADC with DMA on CMSIS

void DMA2_Stream4_IRQHandler(void)
{
        
GPIOD->ODR        ^=((1<<12)|(1<<13)|(1<<14)|(1<<15));
}
uint16_t BUFF[100];int main(void)
{
    
SystemInit();
//*********************GPIO*************************
        
RCC->AHB1ENR    |= RCC_AHB1ENR_GPIOAEN;
        
RCC->AHB1ENR    |= RCC_AHB1ENR_GPIODEN;
        
GPIOA->MODER    |= GPIO_MODER_MODER6;        //ADC1 CH6 PA6


//*********************TIM3*************************
        
RCC->APB1ENR    |= RCC_APB1ENR_TIM3EN;        // тактирование таймера
        
TIM3->PSC         160-1;                    // предделитель
        
TIM3->ARR         1000-1;                    // переполнение
        
TIM3->CR2         |= TIM_CR2_MMS_1;            // output (TRGO)
        
TIM3->DIER         |= TIM_DIER_UDE;
        
TIM3->CR1         |= TIM_CR1_CEN;                //запуск счета


//********************DMA***************************
        
RCC->AHB1ENR    |= RCC_AHB1ENR_DMA2EN;
        
DMA2_Stream4->CR&=~ DMA_SxCR_CHSEL;            // 000: channel 0 selected
        
DMA2_Stream4->PAR= (uint32_t)&ADC1->DR;     //
        
DMA2_Stream4->M0AR=(uint32_t)&BUFF[0];        // Массив
        
DMA2_Stream4->NDTR=100;                        // Длина буфера
        
DMA2_Stream4->CR|= DMA_SxCR_MINC;            // Инкремент адреса
        
DMA2_Stream4->CR|= DMA_SxCR_MSIZE_0;        // 16 бит
        
DMA2_Stream4->CR|= DMA_SxCR_PSIZE_0;        // 16 бит
        
DMA2_Stream4->CR|= DMA_SxCR_CIRC;            // Непрерывный режим
        
DMA2_Stream4->CR&=~ DMA_SxCR_DIR;            // 01: peripheral-to-Memory
        
DMA2_Stream4->CR|= DMA_SxCR_PL;                // 11: Very high приоритет
        
DMA2_Stream4->CR|= DMA_SxCR_TCIE;            // Transfer complete interrupt enable
        
DMA2_Stream4->CR|= DMA_SxCR_EN;                 // Вкл. передачу
        
NVIC_EnableIRQ(DMA2_Stream4_IRQn);
        
NVIC_SetPriority(DMA2_Stream4_IRQn,5);

//********************ADC1**CH6 PA6***************
        
RCC->APB2ENR    |= RCC_APB2ENR_ADC1EN;
        
ADC1->CR1         |=ADC_CR1_SCAN;                // Scan mode
        
ADC1->CR2        |=(ADC_CR2_EXTSEL_3);        //tim 3 (TRGO)
        
ADC1->SQR3        =6;                            //выбор канала PA6
        
ADC1->CR2         |=ADC_CR2_DMA;                //разрешаем рабуту DMA
        
ADC1->CR2         |=ADC_CR2_DDS;                //DMA disable selection (for single ADC mode)
        
ADC1->CR2        &=~ADC_CR2_CONT;            //Continuous conversion
        
ADC1->CR2        |=ADC_CR2_EXTEN_0;            //01: Trigger detection on the rising edge
        
ADC1->CR2        |= ADC_CR2_EOCS;            //разрешаем прерывания
        
ADC1->CR2         |=ADC_CR2_ADON;                //Вкл. переобразования