void us_ticker_disable_interrupt(void) { TimMasterHandle.Instance = TIM_MST; __HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC1); }
void us_ticker_disable_interrupt(void) { __HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC1); }
/** * @brief Suspend Tick increment. * @note Disable the tick increment by disabling TIM6 update interrupt. * @param None * @retval None */ void HAL_SuspendTick(void) { /* Disable TIM6 update Interrupt */ __HAL_TIM_DISABLE_IT(&TimHandle, TIM_IT_UPDATE); }
/** * @brief Suspend Tick increment. * @note Disable the tick increment by disabling TIM1 update interrupt. * @param None * @retval None */ void HAL_SuspendTick(void) { /* Disable TIM1 update Interrupt */ __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE); }
void vMBPortTimerClose( void ) { __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE); __HAL_TIM_DISABLE(&htim1); }
void HAL_SuspendTick(void) { TimMasterHandle.Instance = TIM_MST; // Disable HAL tick and us_ticker update interrupts (used for 32 bit counter) __HAL_TIM_DISABLE_IT(&TimMasterHandle, (TIM_IT_CC2 | TIM_IT_UPDATE)); }
// Reconfigure the HAL tick using a standard timer instead of systick. HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { RCC_ClkInitTypeDef RCC_ClkInitStruct; uint32_t PclkFreq; // Get clock configuration // Note: PclkFreq contains here the Latency (not used after) HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &PclkFreq); // Get timer clock value #if TIM_MST_PCLK == 1 PclkFreq = HAL_RCC_GetPCLK1Freq(); #else PclkFreq = HAL_RCC_GetPCLK2Freq(); #endif // Enable timer clock TIM_MST_RCC; // Reset timer TIM_MST_RESET_ON; TIM_MST_RESET_OFF; // Configure time base TimMasterHandle.Instance = TIM_MST; TimMasterHandle.Init.Period = 0xFFFFFFFF; // TIMxCLK = PCLKx when the APB prescaler = 1 else TIMxCLK = 2 * PCLKx #if TIM_MST_PCLK == 1 if (RCC_ClkInitStruct.APB1CLKDivider == RCC_HCLK_DIV1) { #else if (RCC_ClkInitStruct.APB2CLKDivider == RCC_HCLK_DIV1) { #endif TimMasterHandle.Init.Prescaler = (uint16_t)((PclkFreq) / 1000000) - 1; // 1 us tick } else { TimMasterHandle.Init.Prescaler = (uint16_t)((PclkFreq * 2) / 1000000) - 1; // 1 us tick } TimMasterHandle.Init.ClockDivision = 0; TimMasterHandle.Init.CounterMode = TIM_COUNTERMODE_UP; #if !TARGET_STM32L1 TimMasterHandle.Init.RepetitionCounter = 0; #endif #if TARGET_STM32F0||TARGET_STM32F7 TimMasterHandle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; #endif HAL_TIM_OC_Init(&TimMasterHandle); NVIC_SetVector(TIM_MST_IRQ, (uint32_t)timer_irq_handler); NVIC_EnableIRQ(TIM_MST_IRQ); // Channel 1 for mbed timeout HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_1); // Channel 2 for HAL tick HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_2); PreviousVal = __HAL_TIM_GetCounter(&TimMasterHandle); __HAL_TIM_SetCompare(&TimMasterHandle, TIM_CHANNEL_2, PreviousVal + HAL_TICK_DELAY); __HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2); #if DEBUG_TICK > 0 __GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); #endif return HAL_OK; } void HAL_SuspendTick(void) { TimMasterHandle.Instance = TIM_MST; __HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2); }
/* TIM4 打开触发脉冲 */ void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { uint32_t compare = 0; /* TIM4 */ if (htim->Instance == TIM4) { // 1 // 排烟风机 通道 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { // 排烟风机 delay_on, 打开输出 if (!is_lower_blow) { __HAL_TIM_DISABLE_IT(&htim4, TIM_IT_CC1); } ON_SMOKE; // 延时关断 compare = __HAL_TIM_GET_COUNTER(&htim2) + uS_DELAY_OFF; __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, compare); __HAL_TIM_ENABLE_IT(&htim2, TIM_IT_CC1); // 下一个半波 if (is_lower_blow) { is_lower_blow = false; compare = __HAL_TIM_GET_COUNTER(&htim4) + HALF_T1; __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, compare); //__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC1); } } // 2 // 循环风机通道 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) { // 循环风机 delay_on, 打开输出 if (!is_lower_exchange){ __HAL_TIM_DISABLE_IT(&htim4, TIM_IT_CC2); } ON_EXCHANGE; // 延时关断 compare = __HAL_TIM_GET_COUNTER(&htim2) + uS_DELAY_OFF; __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, compare); __HAL_TIM_ENABLE_IT(&htim2, TIM_IT_CC2); // 下一个半波 if (is_lower_exchange) { is_lower_exchange = false; compare = __HAL_TIM_GET_COUNTER(&htim4) + HALF_T1; __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_2, compare); //__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC2); } } // 3 // 送料电机 通道 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) { // 送料 if (!is_lower_feed) { __HAL_TIM_DISABLE_IT(&htim4, TIM_IT_CC3); } ON_FEED; // 延时关断 compare = __HAL_TIM_GET_COUNTER(&htim2) + uS_DELAY_OFF; __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, compare); __HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC3); // 下一个半波 if (is_lower_feed){ is_lower_feed = false; compare = __HAL_TIM_GET_COUNTER(&htim4) + HALF_T1; __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, compare); //__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC3); } } // } /* TIM2 关闭触发脉冲 */ // 延时x us关闭触发 if (htim->Instance == TIM2) { // 1 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { OFF_SMOKE; __HAL_TIM_DISABLE_IT(&htim2, TIM_IT_CC1); } // 2 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) { // 输出 循环:Off OFF_EXCHANGE; __HAL_TIM_DISABLE_IT(&htim2, TIM_IT_CC2); } // 3 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) { // 输出 送料: Off OFF_FEED; __HAL_TIM_DISABLE_IT(&htim2, TIM_IT_CC3); } } // TIM2 // }