15.10.2016, 18:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
EXTI on STM32F030c8t6
Добрый день. Нужно настроить внешнее прерывание на PORTB 15. Читаю пол дня даташит, смотрю примеры в инете - нифига не могу понять. На 103 серии всё легко заработало а тут немогу понять что где включить. Кучу регистров надо понастраивать. Может у кого есть под F0 серию примерчик??? Дайте плиз... Надо включить тактирование SYSCFG, Альтернативные функции настроить(немогу понять где их искать, для таймеров и т.д. понятно в таблице, а внешние прерывания не нахожу), регистр EXTI включить в IMR разрешение прерывания MR15, включить в нем же FTSR-›TR15. Обработчик прерывания вроде нашел
PHP код:
|
void EXTI4_15_IRQHandler(void)
{
if (EXTI-›PR & (1‹‹15)) //проверяем прерывание от EXTI15
{
EXTI-›PR |= EXTI_PR_PR15; //сброс флага прерывания
temp++;
}
}
void Init_EXTI(void)
{
EXTI_InitTypeDef EXTI_User;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd (RCC_APB2Periph_SYSCFG, ENABLE);
// Прерывание по падению уровня на ноге 1 и 2 порта привязанного к EXTI
EXTI-›FTSR |=EXTI_FTSR_TR15;
// EXTI_User.EXTI_Line = EXTI_Line15; //PB15
// EXTI_User.EXTI_Mode = EXTI_Mode_Interrupt;
// EXTI_User.EXTI_Trigger = EXTI_Trigger_Falling;
// EXTI_User.EXTI_LineCmd = ENABLE;
// EXTI_Init(&EXTI_User);
NVIC_EnableIRQ (EXTI4_15_IRQn);
// Разрешаем прерывания в периферии
EXTI-›IMR |=EXTI_IMR_MR15 ;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;// | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_1);//непонятно какой номер AF_x
}
|
В инете куча под 103-ю серию. Там всё работает как всегда )))
|
|
|
|
15.10.2016, 18:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
блин как всегда. Отвлекся и всё сошлось.... Всё переделал.... Вот если кому нужно будет
PHP код:
|
void EXTI4_15_IRQHandler(void)
{
// if(EXTI_GetITStatus(EXTI_Line8) != RESET)
// {
// /* Toggle LED1 */
// STM_EVAL_LEDToggle(LED1);
//
// /* Clear the EXTI line 8 pending bit */
// EXTI_ClearITPendingBit(EXTI_Line8);
// }
if(EXTI_GetITStatus(EXTI_Line15) != RESET)
{
/* Toggle LED4 */
//STM_EVAL_LEDToggle(LED4);
speed_sr_TAH++;
/* Clear the EXTI line 13 pending bit */
EXTI_ClearITPendingBit(EXTI_Line15);
}
}
static void EXTI4_15_Config(void)
{
EXTI_InitTypeDef EXTI_User;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable GPIOC clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Configure PC8 and PC13 pins as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Connect EXTI8 Line to PC8 pin */
//SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource8);
/* Connect EXTI13 Line to PC13 pin */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource15);
/* Configure EXTI8 line */
//EXTI_InitStructure.EXTI_Line = EXTI_Line8;
EXTI_User.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_User.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_User.EXTI_LineCmd = ENABLE;
//EXTI_Init(&EXTI_InitStructure);
/* Configure EXTI13 line */
EXTI_User.EXTI_Line = EXTI_Line15;
EXTI_Init(&EXTI_User);
/* Enable and set EXTI4_15 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
|
|
|
|
|
15.10.2016, 19:17
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
Снова SPL, так ничему и не научишься
__________________
Осторожно , злой кот
|
|
|
|
15.10.2016, 21:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
я по сплу сраному смотрю какие регистры включены.....
|
|
|
|
15.10.2016, 22:19
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
припец нах.
у меня это занимает строк 10 от силы.
не помню чо я там делал уж точно но выглядит вот так
правда это для сотки
NVIC_EnableIRQ(EXTI1_IRQn);
EXTI-›IMR = EXTI_IMR_MR1;
EXTI-›FTSR = EXTI_FTSR_TR1;
EXTI-›EMR = 0;
void EXTI1_IRQHandler ()
{
EXTI-›PR=0XFFFFFF; //сбрасываем всё нах
EXTI-›IMR = 0;
далее твой код
}
Последний раз редактировалось индюк; 15.10.2016 в 22:24.
|
|
|
|
15.10.2016, 23:15
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
Ну и работать эти 10 строк тоже будут "от силы". Потому что половины, если не больше, не хватает.
К тому же, F030 довольно значительно отличается от F100, в том числе и по конфигу внешних прерыв.
|
|
|
|
15.10.2016, 23:27
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
Сообщение от NewWriter
|
работать эти 10 строк тоже будут "от силы". Потому что половины, если не больше, не хватает.
|
у меня одно внешнее используется. поэтому больше там не надо.
всё работает. rc5 принимает
|
|
|
|
16.10.2016, 00:15
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
Ну я ж говорю - половина кода сюда не выложена. В том то и фишка, что внеш.прер. конфигятся в двух разных не связанных друг с другом местах - в альтерн.функц. (у F100) или в сис.конфиге у F030. Различаются и вектора внешних прерываний по группировке номеров линий.
И кстати, RC5 невозможно поставить на EXTI1. На EXTI1 можно поставить только Px1, вывод 1 любой буквы порта выбираемой в настройке.
|
|
|
|
16.10.2016, 00:18
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
я не знаю что вам невозможно - я показал код который работает на 10 платах несколько лет.
вы не поняли - rc5 это ик пульт а не порт
|
|
|
|
16.10.2016, 00:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: EXTI on STM32F030c8t6
НА СОТКЕ БЫЛО МИНИМУМ В ДВА РАЗА МЕНЬШЕ СТРОК НА СПЛ ДАЖЕ )) Ой капсил))) Там всё и работало легко. А тут по всем регистрам прыгать пришлось....
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:41.
|
|