java 定时器 的中断程序,STM32定时器中断
我試圖在STM32L073中使用定時器外設但我有問題 . 我在STM32Cube中生成了設置代碼,并且只使用了HAL API提供的函數(shù) . 問題是定時器中斷只發(fā)生一次,它應該始終發(fā)生溢出 . 我不知道計時器是否正在運行或我的設置是錯誤的(我相信它不應該是因為我使用Cube生成的代碼) . 有人可以幫忙嗎?
這在while while循環(huán)中調(diào)用
void MX_TIM7_Init(void){
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim7.Instance = TIM7;
htim7.Init.Prescaler = 00;
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
htim7.Init.Period = 00;
if (HAL_TIM_Base_Init(&htim7) != HAL_OK) {
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK){
_Error_Handler(__FILE__, __LINE__);
}
}
BaseMspInit方法
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle){
if(tim_baseHandle->Instance==TIM7){
/* USER CODE BEGIN TIM7_MspInit 0 */
/* USER CODE END TIM7_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM7_CLK_ENABLE();
/* TIM7 interrupt Init */
HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM7_IRQn);
/* USER CODE BEGIN TIM7_MspInit 1 */
/* USER CODE END TIM7_MspInit 1 */
}
}
然后在主要我稱之為
HAL_TIM_Base_Start_IT(&htim7);
這是這樣做的
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim){
/* Check the parameters */
assert_param(IS_TIM_INSTANCE(htim->Instance));
/* Enable the TIM Update interrupt */
__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
/* Enable the Peripheral */
__HAL_TIM_ENABLE(htim);
/* Return function status */
return HAL_OK;
}
我的中斷處理程序調(diào)用PeriodElapsedCallback
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
HAL_GPIO_TogglePin(led_GPIO_Port, led_Pin);
}
它編譯沒有錯誤沒有警告,在調(diào)試器中我看到這個中斷只觸發(fā)一次然后從不 . 期待著答案
附:使用SEGGER Embedded Studio
總結
以上是生活随笔為你收集整理的java 定时器 的中断程序,STM32定时器中断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php写浏览记录,php如何浏览历史记录
- 下一篇: java定时增量同步,一种可配置的定时数