你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
A六月的雨

A六月的雨

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
1 回答

stm32g474RE 输出4相波形,如何精准输出ADC触发的问题。

STM32G4 STM32CubeMX 数字控制器
A六月的雨 A六月的雨 回答时间: 2 小时前

/ USER CODE BEGIN Header / /** @file hrtim.c @brief This file provides code for the configuration of the HRTIM instances. @attention Copyright (c) 2026 STMicroelectronics. All rights reserved. This software is licensed under terms that can be found in the LICENSE file in the root directory of this software component. If no LICENSE file comes with this software, it is provided AS-IS. / / USER CODE END Header / / Includes ------------------------------------------------------------------*/ include "hrtim.h" / USER CODE BEGIN 0 / / USER CODE END 0 / HRTIM_HandleTypeDef hhrtim1; / HRTIM1 init function / void MX_HRTIM1_Init(void) { / USER CODE BEGIN HRTIM1_Init 0 / / USER CODE END HRTIM1_Init 0 / HRTIM_EventCfgTypeDef pEventCfg = {0}; HRTIM_FaultBlankingCfgTypeDef pFaultBlkCfg = {0}; HRTIM_FaultCfgTypeDef pFaultCfg = {0}; HRTIM_TimeBaseCfgTypeDef pTimeBaseCfg = {0}; HRTIM_TimerCfgTypeDef pTimerCfg = {0}; HRTIM_TimerCtlTypeDef pTimerCtl = {0}; HRTIM_CompareCfgTypeDef pCompareCfg = {0}; HRTIM_DeadTimeCfgTypeDef pDeadTimeCfg = {0}; HRTIM_OutputCfgTypeDef pOutputCfg = {0}; / USER CODE BEGIN HRTIM1_Init 1 / / USER CODE END HRTIM1_Init 1 / hhrtim1.Instance = HRTIM1; hhrtim1.Init.HRTIMInterruptResquests = HRTIM_IT_NONE; hhrtim1.Init.SyncOptions = HRTIM_SYNCOPTION_NONE; if (HAL_HRTIM_Init(&hhrtim1) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_DLLCalibrationStart(&hhrtim1, HRTIM_CALIBRATIONRATE_3) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_PollForDLLCalibration(&hhrtim1, 10) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_EventPrescalerConfig(&hhrtim1, HRTIM_EVENTPRESCALER_DIV1) != HAL_OK) { Error_Handler(); } pEventCfg.Source = HRTIM_EEV1SRC_COMP2_OUT; pEventCfg.Polarity = HRTIM_EVENTPOLARITY_HIGH; pEventCfg.Sensitivity = HRTIM_EVENTSENSITIVITY_LEVEL; pEventCfg.FastMode = HRTIM_EVENTFASTMODE_DISABLE; if (HAL_HRTIM_EventConfig(&hhrtim1, HRTIM_EVENT_1, &pEventCfg) != HAL_OK) { Error_Handler(); } pEventCfg.Source = HRTIM_EEV4SRC_COMP1_OUT; if (HAL_HRTIM_EventConfig(&hhrtim1, HRTIM_EVENT_4, &pEventCfg) != HAL_OK) { Error_Handler(); } pEventCfg.Source = HRTIM_EEV10SRC_GPIO; pEventCfg.Filter = HRTIM_EVENTFILTER_NONE; if (HAL_HRTIM_EventConfig(&hhrtim1, HRTIM_EVENT_10, &pEventCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_FaultPrescalerConfig(&hhrtim1, HRTIM_FAULTPRESCALER_DIV1) != HAL_OK) { Error_Handler(); } pFaultBlkCfg.Threshold = 0; pFaultBlkCfg.ResetMode = HRTIM_FAULTCOUNTERRST_UNCONDITIONAL; pFaultBlkCfg.BlankingSource = HRTIM_FAULTBLANKINGMODE_RSTALIGNED; if (HAL_HRTIM_FaultCounterConfig(&hhrtim1, HRTIM_FAULT_5, &pFaultBlkCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_FaultBlankingConfigAndEnable(&hhrtim1, HRTIM_FAULT_5, &pFaultBlkCfg) != HAL_OK) { Error_Handler(); } pFaultCfg.Source = HRTIM_FAULTSOURCE_DIGITALINPUT; pFaultCfg.Polarity = HRTIM_FAULTPOLARITY_HIGH; pFaultCfg.Filter = HRTIM_FAULTFILTER_NONE; pFaultCfg.Lock = HRTIM_FAULTLOCK_READWRITE; if (HAL_HRTIM_FaultConfig(&hhrtim1, HRTIM_FAULT_5, &pFaultCfg) != HAL_OK) { Error_Handler(); } HAL_HRTIM_FaultModeCtl(&hhrtim1, HRTIM_FAULT_5, HRTIM_FAULTMODECTL_ENABLED); pTimeBaseCfg.Period = 5000; pTimeBaseCfg.RepetitionCounter = 0x00; pTimeBaseCfg.PrescalerRatio = HRTIM_PRESCALERRATIO_MUL2; pTimeBaseCfg.Mode = HRTIM_MODE_CONTINUOUS; if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimeBaseCfg) != HAL_OK) { Error_Handler(); } pTimerCfg.InterruptRequests = HRTIM_MASTER_IT_NONE; pTimerCfg.DMARequests = HRTIM_MASTER_DMA_NONE; pTimerCfg.DMASrcAddress = 0x0000; pTimerCfg.DMADstAddress = 0x0000; pTimerCfg.DMASize = 0x1; pTimerCfg.HalfModeEnable = HRTIM_HALFMODE_DISABLED; pTimerCfg.InterleavedMode = HRTIM_INTERLEAVED_MODE_QUAD; pTimerCfg.StartOnSync = HRTIM_SYNCSTART_DISABLED; pTimerCfg.ResetOnSync = HRTIM_SYNCRESET_DISABLED; pTimerCfg.DACSynchro = HRTIM_DACSYNC_NONE; pTimerCfg.PreloadEnable = HRTIM_PRELOAD_DISABLED; pTimerCfg.UpdateGating = HRTIM_UPDATEGATING_INDEPENDENT; pTimerCfg.BurstMode = HRTIM_TIMERBURSTMODE_MAINTAINCLOCK; pTimerCfg.RepetitionUpdate = HRTIM_UPDATEONREPETITION_DISABLED; pTimerCfg.ReSyncUpdate = HRTIM_TIMERESYNC_UPDATE_UNCONDITIONAL; if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimerCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 4999; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, HRTIM_COMPAREUNIT_4, &pCompareCfg) != HAL_OK) { Error_Handler(); } pTimeBaseCfg.Period = 20000; if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pTimeBaseCfg) != HAL_OK) { Error_Handler(); } /------------------ 配置HRTIM TRG2用于ADC触发 ------------------/ /** @brief 配置HRTIM的TRG2输出 @note 用于触发ADC1和ADC2的注入组转换,实现4相电流的双重采样 TRG2由A、B、C、D四个定时器的CMP2事件触发 */ HRTIM_ADCTriggerCfgTypeDef pAdcTrigCfg = {0}; pAdcTrigCfg.UpdateSource = HRTIM_ADCTRIGGERUPDATE_MASTER; pAdcTrigCfg.Trigger = HRTIM_ADCTRIGGEREVENT24_TIMERA_CMP2 | HRTIM_ADCTRIGGEREVENT24_TIMERB_CMP2 | HRTIM_ADCTRIGGEREVENT24_TIMERA_CMP4 | HRTIM_ADCTRIGGEREVENT24_TIMERB_CMP4; if (HAL_HRTIM_ADCTriggerConfig(&hhrtim1, HRTIM_ADCTRIGGER_2, &pAdcTrigCfg) != HAL_OK) { Error_Handler(); } // if (HAL_HRTIM_ADCPostScalerConfig(&hhrtim1, HRTIM_ADCTRIGGER_2, 0x0) != HAL_OK) // { // Error_Handler(); // } pAdcTrigCfg.UpdateSource = HRTIM_ADCTRIGGERUPDATE_MASTER; pAdcTrigCfg.Trigger = HRTIM_ADCTRIGGEREVENT24_TIMERC_CMP2|HRTIM_ADCTRIGGEREVENT24_TIMERC_CMP4 |HRTIM_ADCTRIGGEREVENT24_TIMERD_CMP2|HRTIM_ADCTRIGGEREVENT24_TIMERD_CMP4; if (HAL_HRTIM_ADCTriggerConfig(&hhrtim1, HRTIM_ADCTRIGGER_4, &pAdcTrigCfg) != HAL_OK) { Error_Handler(); } // if (HAL_HRTIM_ADCPostScalerConfig(&hhrtim1, HRTIM_ADCTRIGGER_4, 0x0) != HAL_OK) // { // Error_Handler(); // } pTimerCtl.UpDownMode = HRTIM_TIMERUPDOWNMODE_UP; pTimerCtl.GreaterCMP1 = HRTIM_TIMERGTCMP1_EQUAL; pTimerCtl.DualChannelDacEnable = HRTIM_TIMER_DCDE_DISABLED; if (HAL_HRTIM_WaveformTimerControl(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pTimerCtl) != HAL_OK) { Error_Handler(); } pTimerCfg.InterruptRequests = HRTIM_TIM_IT_NONE; pTimerCfg.DMARequests = HRTIM_TIM_DMA_NONE; pTimerCfg.InterleavedMode = HRTIM_INTERLEAVED_MODE_DISABLED; pTimerCfg.PreloadEnable = HRTIM_PRELOAD_ENABLED; pTimerCfg.RepetitionUpdate = HRTIM_UPDATEONREPETITION_ENABLED; pTimerCfg.PushPull = HRTIM_TIMPUSHPULLMODE_DISABLED; pTimerCfg.FaultEnable = HRTIM_TIMFAULTENABLE_NONE; pTimerCfg.FaultLock = HRTIM_TIMFAULTLOCK_READWRITE; pTimerCfg.DeadTimeInsertion = HRTIM_TIMDEADTIMEINSERTION_DISABLED; pTimerCfg.DelayedProtectionMode = HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED; pTimerCfg.UpdateTrigger = HRTIM_TIMUPDATETRIGGER_NONE; pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_MASTER_PER; pTimerCfg.ResetUpdate = HRTIM_TIMUPDATEONRESET_ENABLED; if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pTimerCfg) != HAL_OK) { Error_Handler(); } pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_MASTER_CMP1; if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pTimerCfg) != HAL_OK) { Error_Handler(); } pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_MASTER_CMP2; if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, &pTimerCfg) != HAL_OK) { Error_Handler(); } pTimerCfg.DelayedProtectionMode = HRTIM_TIMER_D_E_DELAYEDPROTECTION_DISABLED; pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_MASTER_CMP3; if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, &pTimerCfg) != HAL_OK) { Error_Handler(); } /------------------ 配置A、B、C、D定时器的CMP1 ------------------/ pCompareCfg.CompareValue = 2000; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) { Error_Handler(); } /------------------ 配置A、B、C、D定时器的CMP2 (用于ADC触发) ------------------/ /** @brief 配置A、B、C、D定时器的CMP2 @note A、B 的 CMP2和CMP2事件用于触发ADC1注入采样, C、D 的 CMP3和CMP4事件用于触发ADC2注入采样,实现4相电流的双重采样 */ pCompareCfg.CompareValue = 200; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_COMPAREUNIT_2, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 + 200; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_2, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 2 + 200; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_COMPAREUNIT_2, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 3 + 200; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_2, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 400; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_COMPAREUNIT_4, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 + 400; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_4, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 2 + 400; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_COMPAREUNIT_4, &pCompareCfg) != HAL_OK) { Error_Handler(); } pCompareCfg.CompareValue = 5000 / 4 3 + 400; if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_4, &pCompareCfg) != HAL_OK) { Error_Handler(); } pDeadTimeCfg.Prescaler = HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV1; pDeadTimeCfg.RisingValue = 1; pDeadTimeCfg.RisingSign = HRTIM_TIMDEADTIME_RISINGSIGN_POSITIVE; pDeadTimeCfg.RisingLock = HRTIM_TIMDEADTIME_RISINGLOCK_WRITE; pDeadTimeCfg.RisingSignLock = HRTIM_TIMDEADTIME_RISINGSIGNLOCK_WRITE; pDeadTimeCfg.FallingValue = 1; pDeadTimeCfg.FallingSign = HRTIM_TIMDEADTIME_FALLINGSIGN_POSITIVE; pDeadTimeCfg.FallingLock = HRTIM_TIMDEADTIME_FALLINGLOCK_WRITE; pDeadTimeCfg.FallingSignLock = HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_WRITE; if (HAL_HRTIM_DeadTimeConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pDeadTimeCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_DeadTimeConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pDeadTimeCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_DeadTimeConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, &pDeadTimeCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_DeadTimeConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, &pDeadTimeCfg) != HAL_OK) { Error_Handler(); } pOutputCfg.Polarity = HRTIM_OUTPUTPOLARITY_HIGH; pOutputCfg.SetSource = HRTIM_OUTPUTSET_MASTERPER; pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP1|HRTIM_OUTPUTSET_EEV_1 |HRTIM_OUTPUTSET_EEV_4; pOutputCfg.IdleMode = HRTIM_OUTPUTIDLEMODE_NONE; pOutputCfg.IdleLevel = HRTIM_OUTPUTIDLELEVEL_INACTIVE; pOutputCfg.FaultLevel = HRTIM_OUTPUTFAULTLEVEL_NONE; pOutputCfg.ChopperModeEnable = HRTIM_OUTPUTCHOPPERMODE_DISABLED; pOutputCfg.BurstModeEntryDelayed = HRTIM_OUTPUTBURSTMODEENTRY_REGULAR; if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_OUTPUT_TA1, &pOutputCfg) != HAL_OK) { Error_Handler(); } pOutputCfg.SetSource = HRTIM_OUTPUTSET_MASTERCMP1; pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP1; if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_OUTPUT_TB1, &pOutputCfg) != HAL_OK) { Error_Handler(); } pOutputCfg.SetSource = HRTIM_OUTPUTSET_MASTERCMP2; if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_OUTPUT_TC1, &pOutputCfg) != HAL_OK) { Error_Handler(); } pOutputCfg.SetSource = HRTIM_OUTPUTSET_MASTERCMP3; if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_OUTPUT_TD1, &pOutputCfg) != HAL_OK) { Error_Handler(); } pOutputCfg.SetSource = HRTIM_OUTPUTSET_NONE; pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_NONE; if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_OUTPUT_TA2, &pOutputCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_OUTPUT_TB2, &pOutputCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_OUTPUT_TC2, &pOutputCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_OUTPUT_TD2, &pOutputCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pTimeBaseCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformTimerControl(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pTimerCtl) != HAL_OK) { Error_Handler(); } // pCompareCfg.CompareValue = 2000; // if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) // { // Error_Handler(); // } if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, &pTimeBaseCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformTimerControl(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, &pTimerCtl) != HAL_OK) { Error_Handler(); } // pCompareCfg.CompareValue = 3000; // if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_C, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) // { // Error_Handler(); // } if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, &pTimeBaseCfg) != HAL_OK) { Error_Handler(); } if (HAL_HRTIM_WaveformTimerControl(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, &pTimerCtl) != HAL_OK) { Error_Handler(); } // pCompareCfg.CompareValue = 4000; // if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK) // { // Error_Handler(); // } / USER CODE BEGIN HRTIM1_Init 2 / / USER CODE END HRTIM1_Init 2 / HAL_HRTIM_MspPostInit(&hhrtim1); } void HAL_HRTIM_MspInit(HRTIM_HandleTypeDef* hrtimHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if (hrtimHandle->Instance==HRTIM1) { / USER CODE BEGIN HRTIM1_MspInit 0 / /* USER CODE END HRTIM1_MspInit 0 */ /* HRTIM1 clock enable */ __HAL_RCC_HRTIM1_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); /**HRTIM1 GPIO Configuration PC6 ------> HRTIM1_EEV10 PC7 ------> HRTIM1_FLT5 */ GPIO_InitStruct.Pin = Over_Cur_EEV_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF3_HRTIM1; HAL_GPIO_Init(Over_Cur_EEV_GPIO_Port, &GPIO_InitStruct); GPIO_InitStruct.Pin = Over_Cur_FLT_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF3_HRTIM1; HAL_GPIO_Init(Over_Cur_FLT_GPIO_Port, &GPIO_InitStruct); /* USER CODE BEGIN HRTIM1_MspInit 1 */ /* USER CODE END HRTIM1_MspInit 1 */ } } void HAL_HRTIM_MspPostInit(HRTIM_HandleTypeDef* hrtimHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if (hrtimHandle->Instance==HRTIM1) { / USER CODE BEGIN HRTIM1_MspPostInit 0 / /* USER CODE END HRTIM1_MspPostInit 0 */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**HRTIM1 GPIO Configuration PB12 ------> HRTIM1_CHC1 PB13 ------> HRTIM1_CHC2 PB14 ------> HRTIM1_CHD1 PB15 ------> HRTIM1_CHD2 PA8 ------> HRTIM1_CHA1 PA9 ------> HRTIM1_CHA2 PA10 ------> HRTIM1_CHB1 PA11 ------> HRTIM1_CHB2 */ GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_HRTIM1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_HRTIM1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USER CODE BEGIN HRTIM1_MspPostInit 1 */ HAL_NVIC_SetPriority(HRTIM1_Master_IRQn, 1, 0); HAL_NVIC_EnableIRQ(HRTIM1_Master_IRQn); /* USER CODE BEGIN HRTIM1_MspInit 1 */ __HAL_HRTIM_MASTER_ENABLE_IT(&hhrtim1, HRTIM_MASTER_IT_MREP); /* USER CODE END HRTIM1_MspPostInit 1 */ } } void HAL_HRTIM_MspDeInit(HRTIM_HandleTypeDef* hrtimHandle) { if (hrtimHandle->Instance==HRTIM1) { / USER CODE BEGIN HRTIM1_MspDeInit 0 / /* USER CODE END HRTIM1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_HRTIM1_CLK_DISABLE(); /**HRTIM1 GPIO Configuration PB12 ------> HRTIM1_CHC1 PB13 ------> HRTIM1_CHC2 PB14 ------> HRTIM1_CHD1 PB15 ------> HRTIM1_CHD2 PC6 ------> HRTIM1_EEV10 PC7 ------> HRTIM1_FLT5 PA8 ------> HRTIM1_CHA1 PA9 ------> HRTIM1_CHA2 PA10 ------> HRTIM1_CHB1 PA11 ------> HRTIM1_CHB2 */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15); HAL_GPIO_DeInit(GPIOC, Over_Cur_EEV_Pin|Over_Cur_FLT_Pin); HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11); /* USER CODE BEGIN HRTIM1_MspDeInit 1 */ /* USER CODE END HRTIM1_MspDeInit 1 */ } } / USER CODE BEGIN 1 / void HAL_HRTIM_RepetitionEventCallback(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx) { if (TimerIdx == HRTIM_TIMERINDEX_MASTER) { // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); } } / USER CODE END 1 /

赞0
A六月的雨 A六月的雨


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16