aras Napisano Październik 9, 2018 Udostępnij Napisano Październik 9, 2018 Chce wykorzystać kod z artykułu wraz z przerwaniem TIM_IT_Update, problem w tym, że gdy mam zsetupowany kontroler przerwań NVIC, to program nie może wyjść z TIM2_IRQHandler() pomimo tego, że czyszcze flage przez IM_ClearITPendingBit(TIM2, TIM_IT_Update); Sam TIM2 działa bez zarzutu, i jestem w stanie migać diodą w pętli głównej programu, ale tylko gdy pominę setup NVIC w kodzie. Co może być powodem tego problemu? Kompilator? Program pisze pod STM32f103C8 na eclipsowym OpenSTM. /** ****************************************************************************** * @file main.c * @author Ac6 * @version V1.0 * @date 01-December-2013 * @brief Default main function. ****************************************************************************** */ #include "stm32f10x.h" void TIM2_IRQHandler() { if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET){ TIM_ClearITPendingBit(TIM2, TIM_IT_Update); if (GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)) GPIO_ResetBits(GPIOC, GPIO_Pin_13); else GPIO_SetBits(GPIOC, GPIO_Pin_13); } } int main(void){ GPIO_InitTypeDef gpio; TIM_TimeBaseInitTypeDef tim; NVIC_InitTypeDef nvic; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_13; gpio.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &gpio); TIM_TimeBaseStructInit(&tim); tim.TIM_CounterMode = TIM_CounterMode_Up; tim.TIM_Prescaler = 7200 - 1; tim.TIM_Period = 10000 - 1; TIM_TimeBaseInit(TIM2, &tim); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE); // nvic.NVIC_IRQChannel = TIM2_IRQn; // nvic.NVIC_IRQChannelPreemptionPriority = 0; // nvic.NVIC_IRQChannelSubPriority = 0; // nvic.NVIC_IRQChannelCmd = ENABLE; // NVIC_Init(&nvic); while (1) { int timerValue = TIM_GetCounter(TIM2); if (timerValue > 1000) GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); else GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); } } Cytuj Link do komentarza Share on other sites More sharing options...
Nawyk Październik 13, 2018 Udostępnij Październik 13, 2018 Skąd wiesz, że nie wychodzisz z TIM2_IRQHandler i co przez to rozumiesz? Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!