java 定时器 的中断程序,STM32定时器中断
我試圖在STM32L073中使用定時(shí)器外設(shè)但我有問題 . 我在STM32Cube中生成了設(shè)置代碼,并且只使用了HAL API提供的函數(shù) . 問題是定時(shí)器中斷只發(fā)生一次,它應(yīng)該始終發(fā)生溢出 . 我不知道計(jì)時(shí)器是否正在運(yùn)行或我的設(shè)置是錯(cuò)誤的(我相信它不應(yīng)該是因?yàn)槲沂褂肅ube生成的代碼) . 有人可以幫忙嗎?
這在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);
}
它編譯沒有錯(cuò)誤沒有警告,在調(diào)試器中我看到這個(gè)中斷只觸發(fā)一次然后從不 . 期待著答案
附:使用SEGGER Embedded Studio
總結(jié)
以上是生活随笔為你收集整理的java 定时器 的中断程序,STM32定时器中断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php写浏览记录,php如何浏览历史记录
- 下一篇: java定时增量同步,一种可配置的定时数