diff --git a/CAR.ioc b/CAR.ioc index c5a8a1e..eab2f9d 100644 --- a/CAR.ioc +++ b/CAR.ioc @@ -1,17 +1,30 @@ #MicroXplorer Configuration settings - do not modify ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_5 +ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_6 ADC1.ContinuousConvMode=ENABLE -ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ContinuousConvMode,NbrOfConversion -ADC1.NbrOfConversion=1 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,NbrOfConversion,master,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion +ADC1.NbrOfConversion=2 ADC1.NbrOfConversionFlag=1 ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.Rank-1\#ChannelRegularConversion=2 ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 ADC1.master=1 CAD.formats= CAD.pinconfig= CAD.provider= +Dma.ADC1.1.Direction=DMA_PERIPH_TO_MEMORY +Dma.ADC1.1.Instance=DMA1_Channel1 +Dma.ADC1.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.ADC1.1.MemInc=DMA_MINC_ENABLE +Dma.ADC1.1.Mode=DMA_CIRCULAR +Dma.ADC1.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.ADC1.1.PeriphInc=DMA_PINC_DISABLE +Dma.ADC1.1.Priority=DMA_PRIORITY_LOW +Dma.ADC1.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority Dma.Request0=USART2_RX -Dma.RequestsNb=1 +Dma.Request1=ADC1 +Dma.RequestsNb=2 Dma.USART2_RX.0.Direction=DMA_PERIPH_TO_MEMORY Dma.USART2_RX.0.Instance=DMA1_Channel6 Dma.USART2_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE @@ -42,33 +55,34 @@ Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PD0-OSC_IN Mcu.Pin1=PD1-OSC_OUT -Mcu.Pin10=PB10 -Mcu.Pin11=PB11 -Mcu.Pin12=PA9 -Mcu.Pin13=PA10 -Mcu.Pin14=PA12 -Mcu.Pin15=PA13 -Mcu.Pin16=PA14 -Mcu.Pin17=PA15 -Mcu.Pin18=PB4 -Mcu.Pin19=PB5 +Mcu.Pin10=PB1 +Mcu.Pin11=PB10 +Mcu.Pin12=PB11 +Mcu.Pin13=PA9 +Mcu.Pin14=PA10 +Mcu.Pin15=PA12 +Mcu.Pin16=PA13 +Mcu.Pin17=PA14 +Mcu.Pin18=PA15 +Mcu.Pin19=PB4 Mcu.Pin2=PA0-WKUP -Mcu.Pin20=PB6 -Mcu.Pin21=PB7 -Mcu.Pin22=PB8 -Mcu.Pin23=PB9 -Mcu.Pin24=VP_SYS_VS_Systick -Mcu.Pin25=VP_TIM2_VS_ClockSourceINT -Mcu.Pin26=VP_TIM3_VS_ClockSourceINT -Mcu.Pin27=VP_TIM4_VS_ClockSourceINT +Mcu.Pin20=PB5 +Mcu.Pin21=PB6 +Mcu.Pin22=PB7 +Mcu.Pin23=PB8 +Mcu.Pin24=PB9 +Mcu.Pin25=VP_SYS_VS_Systick +Mcu.Pin26=VP_TIM2_VS_ClockSourceINT +Mcu.Pin27=VP_TIM3_VS_ClockSourceINT +Mcu.Pin28=VP_TIM4_VS_ClockSourceINT Mcu.Pin3=PA1 Mcu.Pin4=PA2 Mcu.Pin5=PA3 Mcu.Pin6=PA5 -Mcu.Pin7=PA7 -Mcu.Pin8=PB0 -Mcu.Pin9=PB1 -Mcu.PinsNb=28 +Mcu.Pin7=PA6 +Mcu.Pin8=PA7 +Mcu.Pin9=PB0 +Mcu.PinsNb=29 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -123,6 +137,8 @@ PA3.Mode=Asynchronous PA3.Signal=USART2_RX PA5.Locked=true PA5.Signal=ADCx_IN5 +PA6.Locked=true +PA6.Signal=ADCx_IN6 PA7.GPIOParameters=GPIO_Label PA7.GPIO_Label=LED_B_TIM3CH2 PA7.Locked=true @@ -205,7 +221,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_I2C2_Init-I2C2-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART2_UART_Init-USART2-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_I2C2_Init-I2C2-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART2_UART_Init-USART2-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_ADC1_Init-ADC1-false-HAL-true RCC.ADCFreqValue=12000000 RCC.ADCPresc=RCC_ADCPCLK2_DIV6 RCC.AHBFreq_Value=72000000 @@ -230,6 +246,8 @@ RCC.USBFreq_Value=72000000 RCC.VCOOutput2Freq_Value=8000000 SH.ADCx_IN5.0=ADC1_IN5,IN5 SH.ADCx_IN5.ConfNb=1 +SH.ADCx_IN6.0=ADC1_IN6,IN6 +SH.ADCx_IN6.ConfNb=1 SH.GPXTI12.0=GPIO_EXTI12 SH.GPXTI12.ConfNb=1 SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 diff --git a/Core/Inc/syscalls.h b/Core/Inc/syscalls.h index 81c09c0..b09a0f9 100644 --- a/Core/Inc/syscalls.h +++ b/Core/Inc/syscalls.h @@ -8,7 +8,7 @@ #include #include -extern UART_HandleTypeDef huart2; +extern UART_HandleTypeDef huart1; extern int __io_putchar(int ch) __attribute__((weak)); extern int __io_getchar(void) __attribute__((weak)); @@ -53,7 +53,7 @@ __attribute__((weak)) int _write(int file, char *ptr, int len) { * @usage printf("USART1_Target:\r\n"); */ PUTCHAR_PROTOTYPE { - HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); // 阻塞式无限等待 + HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY); // 阻塞式无限等待 return ch; } @@ -68,7 +68,7 @@ PUTCHAR_PROTOTYPE { */ GETCHAR_PROTOTYPE { uint8_t ch = 0; - HAL_UART_Receive(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); + HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch; } diff --git a/Core/Src/adc.c b/Core/Src/adc.c index 619ebfe..a0ed375 100644 --- a/Core/Src/adc.c +++ b/Core/Src/adc.c @@ -25,6 +25,7 @@ /* USER CODE END 0 */ ADC_HandleTypeDef hadc1; +DMA_HandleTypeDef hdma_adc1; /* ADC1 init function */ void MX_ADC1_Init(void) @@ -43,12 +44,12 @@ void MX_ADC1_Init(void) /** Common config */ hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; + hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; + hadc1.Init.NbrOfConversion = 2; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); @@ -63,6 +64,15 @@ void MX_ADC1_Init(void) { Error_Handler(); } + + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_6; + sConfig.Rank = ADC_REGULAR_RANK_2; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ @@ -84,11 +94,29 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) __HAL_RCC_GPIOA_CLK_ENABLE(); /**ADC1 GPIO Configuration PA5 ------> ADC1_IN5 + PA6 ------> ADC1_IN6 */ - GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /* ADC1 DMA Init */ + /* ADC1 Init */ + hdma_adc1.Instance = DMA1_Channel1; + hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_adc1.Init.MemInc = DMA_MINC_ENABLE; + hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_adc1.Init.Mode = DMA_CIRCULAR; + hdma_adc1.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_adc1) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1); + /* ADC1 interrupt Init */ HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(ADC1_2_IRQn); @@ -111,8 +139,12 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) /**ADC1 GPIO Configuration PA5 ------> ADC1_IN5 + PA6 ------> ADC1_IN6 */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6); + + /* ADC1 DMA DeInit */ + HAL_DMA_DeInit(adcHandle->DMA_Handle); /* ADC1 interrupt Deinit */ HAL_NVIC_DisableIRQ(ADC1_2_IRQn); diff --git a/Core/Src/main.c b/Core/Src/main.c index 035f893..f7f1316 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -51,7 +51,7 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ -uint16_t adc_value; +uint16_t adc_value[2]={1}; /* USER CODE END PV */ @@ -106,9 +106,9 @@ int main(void) MX_USART2_UART_Init(); MX_USART1_UART_Init(); MX_ADC1_Init(); - HAL_ADC_Start_IT(&hadc1); /* USER CODE BEGIN 2 */ - HC_SR04_Init(); + HC_SR04_Init(); + HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adc_value,2); /* USER CODE BEGIN 2 */ @@ -117,10 +117,14 @@ int main(void) /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { - printf("test\n"); - - printf("%f",&adc_value); + //printf("%s","test\n"); + // HAL_ADC_Start(&hadc1);//启动ADC1转换//====================================== + //HAL_ADC_PollForConversion(&hadc1,50);//等待ADC转换完成(句柄,超时时间�? + //adc_value = HAL_ADC_GetValue(&hadc1); //读取ADC转换数据 + printf("PA5_value = %f\r\n", 1.0 *adc_value[0]);//输出转换后的烟雾传感器的值的数据 + printf("PA6_value = %f\r\n", 1.0 *adc_value[1]);//输出转换后的烟雾传感器的值的数据 + HAL_Delay(300); // 延时300毫秒 /* USER CODE END WHILE */ @@ -179,7 +183,8 @@ void SystemClock_Config(void) /* USER CODE BEGIN 4 */ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle) { - adc_value = HAL_ADC_GetValue(&hadc1); + //adc_value = HAL_ADC_GetValue(&hadc1); + // printf("%s","test\n"); } /* USER CODE END 4 */ diff --git a/MDK-ARM/CAR.uvoptx b/MDK-ARM/CAR.uvoptx index 22cf9ee..302a536 100644 --- a/MDK-ARM/CAR.uvoptx +++ b/MDK-ARM/CAR.uvoptx @@ -1,4 +1,4 @@ - + 1.0 @@ -45,7 +45,7 @@ 79 66 8 - + 1 @@ -104,16 +104,16 @@ 0 0 3 - - - - - - - - - - + + + + + + + + + + BIN\CMSIS_AGDI.dll @@ -130,17 +130,17 @@ 0 ARMDBGFLAGS - + 0 CMSIS_AGDI - -X"" -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) + -X"" -O206 -S8 -C0 -P00000000 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) 0 DLGUARM - + 0 @@ -167,7 +167,7 @@ 0 1 ..\Core\Src\hcsr04.c - + \\car\../Core/Src/hcsr04.c\39 @@ -183,8 +183,8 @@ 0 0 ../Core/Src/main.c - - + + 2 @@ -199,7 +199,7 @@ 0 1 ..\Core\Src\hcsr04.c - + \\car\../Core/Src/hcsr04.c\45 @@ -215,7 +215,7 @@ 0 1 ..\Core\Src\hcsr04.c - + \\car\../Core/Src/hcsr04.c\32 @@ -268,19 +268,19 @@ 0 0 - - + + 0 0 0 - - - - - - - - + + + + + + + + 1 0 diff --git a/MDK-ARM/CAR.uvprojx b/MDK-ARM/CAR.uvprojx index ca53fd6..308e343 100644 --- a/MDK-ARM/CAR.uvprojx +++ b/MDK-ARM/CAR.uvprojx @@ -1,16 +1,13 @@ - - - + + 2.1 -
### uVision Project, (C) Keil Software
- CAR 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060960::V5.06 update 7 (build 960)::.\ARMCC 0 @@ -19,28 +16,28 @@ Keil.STM32F1xx_DFP.2.4.1 https://www.keil.com/pack/ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ - - - + + + 0 - - - - - - - - - - + + + + + + + + + + $$Device:STM32F103C8$SVD\STM32F103xx.svd 0 0 - - - - - + + + + + 0 0 @@ -55,15 +52,15 @@ 1 1 1 - + 1 0 0 0 0 - - + + 0 0 0 @@ -72,8 +69,8 @@ 0 0 - - + + 0 0 0 @@ -82,15 +79,15 @@ 0 1 - - + + 0 0 0 0 1 - + 0 @@ -104,8 +101,8 @@ 0 0 3 - - + + 0 @@ -114,7 +111,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -139,10 +136,10 @@ 1 BIN\UL2V8M.DLL "" () - - - - + + + + 0 @@ -175,7 +172,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -309,7 +306,7 @@ 0x0 - + 1 @@ -336,9 +333,9 @@ 0 0 - + USE_HAL_DRIVER,STM32F103xB - + ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include @@ -354,10 +351,10 @@ 0 4 - - - - + + + + @@ -367,15 +364,15 @@ 0 1 0 - - - - - - - - - + + + + + + + + + @@ -445,8 +442,6 @@ 2 2 11 - - 1 @@ -474,12 +469,6 @@ 2 2 2 - - - - - - @@ -501,8 +490,6 @@ 2 2 11 - - 1 @@ -530,12 +517,6 @@ 2 2 2 - - - - - - @@ -592,8 +573,6 @@ 2 2 11 - - 1 @@ -621,12 +600,6 @@ 2 2 2 - - - - - - @@ -648,8 +621,6 @@ 2 2 11 - - 1 @@ -677,12 +648,6 @@ 2 2 2 - - - - - - @@ -775,20 +740,18 @@ - - + - + - + - + - @@ -797,5 +760,5 @@ -
+