定义一个用于存放ADC转换数据的数组,如图16 启动TIM3,如图17 启动ADC DMA,并把值存入定义的数组,如图18 图16 图17 图18 这样就完成了,可以编译了。 倒腾了半天,希望看看效果,确认是不是对的,所以就用ST-LINK在线调试来查看adcValue数组的值吧。如图19所示。 图19 在线调试 在while(1)处设置断点,全速运行,...
ADC_InitTypeDef t_adc; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//使能ADC1时钟 t_adc.ADC_Mode = ADC_Mode_Independent; //独立模式:ADC1与ADC2独立 t_adc.ADC_ScanConvMode = DISABLE; //禁用通道扫描 t_adc.ADC_ContinuousConvMode = DISABLE; //禁用连续转换 t_adc.ADC_ExternalTrigConv...
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; //设置DMA内存地址,ADC转换结果直接放入该地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //外设设置为数据传输的来源 DMA_InitStructure.DMA_BufferSize = 1; //DMA缓冲区设置为1; DMA_InitStructure.DMA_PeripheralInc = DMA_Periph...
6.配置DMA 7.main.c 设置ADC数组 开启ADC校准 采集ADC 8. adc.c 在回调函数中停止ADC 9.DEBUG ADC_IN0接3.3v,ADC_IN1接GND
指的是STM32F103的ADC分辨率具有12位,位数越高采集到的ADC越精准。12位是相对于二进制数来说,也就是...
状态 /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1)); //获取指定ADC1的校准程序,设置状态则等待/* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE); ADC_SoftwareStartConvCmd(ADC1, ENABLE); DMA_Cmd(DMA1_Channel1, ENABLE); //启动DMA...
void ADC_DMA_Init(void); void ADC_GPIO_Init(void); void ADC_Configuration(void); #endif 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. LDR.c #include "ldr.h" ...
添加代码 "HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC,100); " 函数是启动DMA的ADC转换,(uint32_t*)&ADC的ADC是9.1中添加的数组,100是数据长度 /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); /* USER CODE BEGIN 2 */ HAL_ADC_Start_DMA(...
1、采用的微控制器为STM32F103RCT6,该微控制器采用Cortex-M3体系结构,它拥有的资源包括:48KB SRAM、256KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口及51个通用IO口分三组,该芯...
STM32F103定时器触发ADC+DMA传输ADC除了软件触发方式之外还有外部触发模式,我用tiM2定时器触发ADC,并用DMA传输ADC的数据。配有例程。定时器部分我选择TIM2定时器发出PWM波的方式触发ADC;PWM模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。下面了解一下ARR和CCRx的寄存器和相应的固件库...