|
Помогите настроить внешнее прерывание STM32, IDE CooCOX, плата discovery |
|
|
|
Sep 16 2013, 06:23
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 30-11-10
Пользователь №: 61 275

|
Код инициализации: CODE // NVIC configuration
NVIC_InitTypeDef NVIC_InitStructure;
// Set the Vector Table base location at 0x08000000 !!!!!! NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
// Configure one bit for preemption priority NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // Enable the EXTI0 Interrupt
//NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; // !!!
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);
// GPIO configuration GPIO_InitTypeDef GPIO_InitStructure; // Configure PA0 as input floating (EXTI Line0) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); // можно ли последовательно? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure EXTI Line0 to generate an interrupt on rising or falling edge GPIO_EXTILineConfig(GPIOA,GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);
NVIC_EnableIRQ(EXTI0_IRQn);
Что сделал не так? Инициализацию сделал на основе примера в CooCox
Сообщение отредактировал IgorKossak - Sep 16 2013, 17:28
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
|
 |
Ответов
|
Sep 17 2013, 04:39
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 30-11-10
Пользователь №: 61 275

|
Код EXTI0_IRQHandler(void){
GPIOC->ODR |= (GPIO_ODR_ODR9); //flags.button_pressed = 1; //turn_on_led(); if(EXTI_GetITStatus(EXTI_Line0) != RESET) { //Handle the interrupt GPIOC->ODR |= (GPIO_ODR_ODR9); EXTI_ClearITPendingBit(EXTI_Line7); } } Вот обработчик. Он не отрабатывает, хочу, чтобы загорался светодиод. К PA0 подключена кнопка User, да. Голубая. Я не уверен в настройках векторов прерываний и приоритетов, не очень понял. Код взял из примера в coocox, который должен работать
Сообщение отредактировал OlegALL - Sep 17 2013, 04:45
|
|
|
|
Сообщений в этой теме
OlegALL Помогите настроить внешнее прерывание STM32, IDE CooCOX, плата discovery Sep 16 2013, 06:23 adnega Цитата(OlegALL @ Sep 16 2013, 10:23) Что ... Sep 16 2013, 07:38 adnega Цитата(DmitryM @ Sep 17 2013, 08:49) И чт... Sep 17 2013, 06:08 OlegALL Я прописал 2 раза зажигание светодиода - вдруг не ... Sep 17 2013, 06:11 adnega Цитата(OlegALL @ Sep 17 2013, 10:11) Я пр... Sep 17 2013, 06:40  OlegALL Цитата(adnega @ Sep 17 2013, 10:40) Вообщ... Sep 17 2013, 10:40   adnega Цитата(OlegALL @ Sep 17 2013, 14:40) Такт... Sep 17 2013, 11:48 OlegALL Всё поправил, что мне тут написали. Разумеется я и... Sep 18 2013, 11:29 adnega Цитата(OlegALL @ Sep 18 2013, 15:29) Испо... Sep 18 2013, 12:07 OlegALL я и передавать буду
Обработчик прерывания usart:
... Sep 19 2013, 07:43 adnega Цитата(OlegALL @ Sep 19 2013, 11:43) Обра... Sep 19 2013, 08:13 OlegALL Нет, прерывание от PA0 как не работало, так и не р... Sep 19 2013, 08:38 adnega Цитата(OlegALL @ Sep 19 2013, 12:38) Или ... Sep 19 2013, 08:57 Builder Цитата(OlegALL @ Sep 19 2013, 11:38) Нет,... Sep 21 2013, 20:07 nx6310 Посмотрите отладчиком что у вас происходит в прогр... Sep 26 2013, 05:49 RuSTA Лучше скажите что за камень у вас используется... Oct 21 2013, 10:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|