
新手刚接触,一个人琢磨了半天还是没有PWM出来,只能跑论坛上来求助了,恳请哪位大神帮忙指点一下,万分感谢啊![]() 附上用cubeMX生成的初始化代码: /* HRTIM1 init function */ void MX_HRTIM1_Init(void) { HRTIM_FaultCfgTypeDef pFaultCfg; HRTIM_TimeBaseCfgTypeDef pTimeBaseCfg; HRTIM_TimerCfgTypeDef pTimerCfg; HRTIM_CompareCfgTypeDef pCompareCfg; HRTIM_TimerEventFilteringCfgTypeDef pTimerEventFilteringCfg; HRTIM_OutputCfgTypeDef pOutputCfg; hhrtim1.Instance = HRTIM1; hhrtim1.Init.HRTIMInterruptResquests = HRTIM_IT_NONE; hhrtim1.Init.SyncOptions = HRTIM_SYNCOPTION_NONE; HAL_HRTIM_Init(&hhrtim1); HAL_HRTIM_DLLCalibrationStart(&hhrtim1, HRTIM_CALIBRATIONRATE_14); HAL_HRTIM_PollForDLLCalibration(&hhrtim1, 10); HAL_HRTIM_FaultPrescalerConfig(&hhrtim1, HRTIM_FAULTPRESCALER_DIV1); pFaultCfg.Source = HRTIM_FAULTSOURCE_DIGITALINPUT; pFaultCfg.Polarity = HRTIM_FAULTPOLARITY_HIGH; pFaultCfg.Filter = HRTIM_FAULTFILTER_NONE; pFaultCfg.Lock = HRTIM_FAULTLOCK_READWRITE; HAL_HRTIM_FaultConfig(&hhrtim1, HRTIM_FAULT_1, &pFaultCfg); HAL_HRTIM_FaultModeCtl(&hhrtim1, HRTIM_FAULT_1, HRTIM_FAULTMODECTL_ENABLED); pTimeBaseCfg.Period = 20000; pTimeBaseCfg.RepetitionCounter = 0x00; pTimeBaseCfg.PrescalerRatio = HRTIM_PRESCALERRATIO_MUL8; pTimeBaseCfg.Mode = HRTIM_MODE_CONTINUOUS; HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimeBaseCfg); pTimerCfg.InterruptRequests = HRTIM_MASTER_IT_NONE; pTimerCfg.DMARequests = HRTIM_MASTER_DMA_NONE; pTimerCfg.DMASrcAddress = 0x0; pTimerCfg.DMADstAddress = 0x0; pTimerCfg.DMASize = 0x1; pTimerCfg.HalfModeEnable = HRTIM_HALFMODE_DISABLED; 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; HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimerCfg); pCompareCfg.CompareValue = 5000; HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_1, &pCompareCfg); pCompareCfg.CompareValue = 15000; HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_3, &pCompareCfg); HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pTimeBaseCfg); pTimerCfg.InterruptRequests = HRTIM_TIM_IT_NONE; pTimerCfg.DMARequests = HRTIM_TIM_DMA_NONE; pTimerCfg.DACSynchro = HRTIM_DACSYNC_DACTRIGOUT_3; pTimerCfg.PreloadEnable = HRTIM_PRELOAD_ENABLED; pTimerCfg.PushPull = HRTIM_TIMPUSHPULLMODE_DISABLED; pTimerCfg.FaultEnable = HRTIM_TIMFAULTENABLE_NONE; pTimerCfg.FaultLock = HRTIM_TIMFAULTLOCK_READWRITE; pTimerCfg.DeadTimeInsertion = HRTIM_TIMDEADTIMEINSERTION_DISABLED; pTimerCfg.DelayedProtectionMode = HRTIM_TIMDELAYEDPROTECTION_DISABLED; pTimerCfg.UpdateTrigger = HRTIM_TIMUPDATETRIGGER_NONE; pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_NONE; pTimerCfg.ResetUpdate = HRTIM_TIMUPDATEONRESET_DISABLED; HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, &pTimerCfg); pCompareCfg.CompareValue = 10000; pCompareCfg.AutoDelayedMode = HRTIM_AUTODELAYEDMODE_REGULAR; pCompareCfg.AutoDelayedTimeout = 0x0000; HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_COMPAREUNIT_2, &pCompareCfg); pTimerEventFilteringCfg.Filter = HRTIM_TIMEVENTFILTER_NONE; pTimerEventFilteringCfg.Latch = HRTIM_TIMEVENTLATCH_DISABLED; HAL_HRTIM_TimerEventFilteringConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_EVENT_NONE, &pTimerEventFilteringCfg); pOutputCfg.Polarity = HRTIM_OUTPUTPOLARITY_HIGH; pOutputCfg.SetSource = HRTIM_OUTPUTSET_TIMPER; pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP1; 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; HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_OUTPUT_TB1, &pOutputCfg); pOutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP2; pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP3; HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_B, HRTIM_OUTPUT_TB2, &pOutputCfg); } /* USER CODE BEGIN 2 */ HAL_HRTIM_WaveformCounterStart(&hhrtim1,HRTIM_TIMERID_TIMER_B); HAL_HRTIM_WaveformOutputStart(&hhrtim1,HRTIM_OUTPUT_TB1); HAL_HRTIM_WaveformOutputStart(&hhrtim1,HRTIM_OUTPUT_TB2); /* USER CODE END 2 */ |
你来掘坟啊,三年前的帖子了
是啊,meibanfa