diff --git a/CAR.ioc b/CAR.ioc index eab2f9d..739b210 100644 --- a/CAR.ioc +++ b/CAR.ioc @@ -41,16 +41,17 @@ Mcu.CPN=STM32F103C8T6 Mcu.Family=STM32F1 Mcu.IP0=ADC1 Mcu.IP1=DMA -Mcu.IP10=USART2 +Mcu.IP10=USART1 +Mcu.IP11=USART2 Mcu.IP2=I2C2 Mcu.IP3=NVIC Mcu.IP4=RCC Mcu.IP5=SYS -Mcu.IP6=TIM2 -Mcu.IP7=TIM3 -Mcu.IP8=TIM4 -Mcu.IP9=USART1 -Mcu.IPNb=11 +Mcu.IP6=TIM1 +Mcu.IP7=TIM2 +Mcu.IP8=TIM3 +Mcu.IP9=TIM4 +Mcu.IPNb=12 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PD0-OSC_IN @@ -60,21 +61,22 @@ 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.Pin15=PA11 +Mcu.Pin16=PA12 +Mcu.Pin17=PA13 +Mcu.Pin18=PA14 +Mcu.Pin19=PA15 Mcu.Pin2=PA0-WKUP -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.Pin20=PB4 +Mcu.Pin21=PB5 +Mcu.Pin22=PB6 +Mcu.Pin23=PB7 +Mcu.Pin24=PB8 +Mcu.Pin25=PB9 +Mcu.Pin26=VP_SYS_VS_Systick +Mcu.Pin27=VP_TIM2_VS_ClockSourceINT +Mcu.Pin28=VP_TIM3_VS_ClockSourceINT +Mcu.Pin29=VP_TIM4_VS_ClockSourceINT Mcu.Pin3=PA1 Mcu.Pin4=PA2 Mcu.Pin5=PA3 @@ -82,7 +84,7 @@ Mcu.Pin6=PA5 Mcu.Pin7=PA6 Mcu.Pin8=PA7 Mcu.Pin9=PB0 -Mcu.PinsNb=29 +Mcu.PinsNb=30 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -116,6 +118,8 @@ PA1.PinState=GPIO_PIN_SET PA1.Signal=GPIO_Output PA10.Mode=Asynchronous PA10.Signal=USART1_RX +PA11.Locked=true +PA11.Signal=S_TIM1_CH4 PA12.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI PA12.GPIO_Label=Echo PA12.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING @@ -250,6 +254,8 @@ SH.ADCx_IN6.0=ADC1_IN6,IN6 SH.ADCx_IN6.ConfNb=1 SH.GPXTI12.0=GPIO_EXTI12 SH.GPXTI12.ConfNb=1 +SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4 +SH.S_TIM1_CH4.ConfNb=1 SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 SH.S_TIM3_CH2.ConfNb=1 SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 @@ -260,6 +266,8 @@ SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1 SH.S_TIM4_CH1.ConfNb=1 SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 SH.S_TIM4_CH2.ConfNb=1 +TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM1.IPParameters=Channel-PWM Generation4 CH4 TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE TIM2.IPParameters=Prescaler,Period,AutoReloadPreload TIM2.Period=72 - 1 diff --git a/Core/Inc/tim.h b/Core/Inc/tim.h index 10a8e1b..4615e6b 100644 --- a/Core/Inc/tim.h +++ b/Core/Inc/tim.h @@ -32,6 +32,8 @@ extern "C" { /* USER CODE END Includes */ +extern TIM_HandleTypeDef htim1; + extern TIM_HandleTypeDef htim2; extern TIM_HandleTypeDef htim3; @@ -42,6 +44,7 @@ extern TIM_HandleTypeDef htim4; /* USER CODE END Private defines */ +void MX_TIM1_Init(void); void MX_TIM2_Init(void); void MX_TIM3_Init(void); void MX_TIM4_Init(void); diff --git a/Core/Src/main.c b/Core/Src/main.c index f7f1316..1973bb6 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -106,6 +106,7 @@ int main(void) MX_USART2_UART_Init(); MX_USART1_UART_Init(); MX_ADC1_Init(); + MX_TIM1_Init(); /* USER CODE BEGIN 2 */ HC_SR04_Init(); HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adc_value,2); @@ -120,7 +121,7 @@ int main(void) //printf("%s","test\n"); // HAL_ADC_Start(&hadc1);//启动ADC1转换//====================================== - //HAL_ADC_PollForConversion(&hadc1,50);//等待ADC转换完成(句柄,超时时间�? + //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]);//输出转换后的烟雾传感器的值的数据 diff --git a/Core/Src/tim.c b/Core/Src/tim.c index ec3e6eb..2ced9c1 100644 --- a/Core/Src/tim.c +++ b/Core/Src/tim.c @@ -24,10 +24,70 @@ /* USER CODE END 0 */ +TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim4; +/* TIM1 init function */ +void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + { + Error_Handler(); + } + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + HAL_TIM_MspPostInit(&htim1); + +} /* TIM2 init function */ void MX_TIM2_Init(void) { @@ -189,6 +249,22 @@ void MX_TIM4_Init(void) } +void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle) +{ + + if(tim_pwmHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* TIM1 clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } +} + void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { @@ -234,11 +310,30 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(timHandle->Instance==TIM3) + if(timHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PA11 ------> TIM1_CH4 + */ + GPIO_InitStruct.Pin = GPIO_PIN_11; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM1_MspPostInit 1 */ + + /* USER CODE END TIM1_MspPostInit 1 */ + } + else if(timHandle->Instance==TIM3) { /* USER CODE BEGIN TIM3_MspPostInit 0 */ /* USER CODE END TIM3_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /**TIM3 GPIO Configuration @@ -283,6 +378,22 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) } +void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle) +{ + + if(tim_pwmHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } +} + void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) {