#include "dma.h"
#include "stdio.h"
#if (ADC_DMA_USE_BUFF==1)
uint16_t ADC_DMA_Buff[10]; //用来作为DMA的目标地址 待采集通道的整数倍
#elif (ADC_DMA_USE_BUFF==0)
uint16_t ADC_DMA_Date=0;
#endif
/*
DMA 直接内存访问(Direct Memory Access)
DMA是的独立的功能,分为DMA1和DMA2
DMA可以和ADC UART SPI IIC等外设一块使用
我们采样: ADC+DMA的使用
配置ADC:
结构体:GPIO ADC
实现光照:PA5 ADC12_IN5 -- 硬件原理图决定
实现烟雾:PC1 ADC123_IN11
配置DMA:
结构体:DMA
使用ADC1采集,ADC1的通道在DMA1上,所以DMA1和ADC1一块使用 -- 参考手册 中文表59决定
源地址: ADC_DR ADC外设里面的寄存器
目标地址:ADC_DMA_Buff 内存的地址里面
*/
void ADC_DMA_Config(void)
{
//1.开GPIOA时钟
//void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); stm3210x_rcc.h 693行
//void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
//2.定义结构体
//void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); stm32f10x_gpio.h 351行
GPIO_InitTypeDef GPIO_InitStruct={0};
//3.给结构体赋值
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//工作模式 模拟输入 (1)看官方例程 (2)参考手册8.1.11
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; //引脚
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //工作速度
//4.调用XXX_init函数,将参数写入到寄存器中
GP