inventor 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба Внешнее прерывание заведено на ногу SWDIO, поэтому отладчик не получается использовать контроллер stm32l432, 13 нога на PORTA #define RFM69_ISR_PIN_Pin GPIO_PIN_13 #define RFM69_ISR_PIN_GPIO_Port GPIOA #define RFM69_ISR_PIN_EXTI_IRQn EXTI15_10_IRQn #define RFM69_ISR_PIN_EXTI_IRQHandler EXTI15_10_IRQHandler void beacon_task_isr_init(void) { GPIO_InitTypeDef gpio = { 0 }; __HAL_RCC_GPIOA_CLK_ENABLE(); /* Это для "средней" и совсем новой платы */ gpio.Pin = RFM69_ISR_PIN_Pin; gpio.Mode = GPIO_MODE_IT_RISING; gpio.Pull = GPIO_NOPULL; HAL_GPIO_Init(RFM69_ISR_PIN_GPIO_Port, &gpio); HAL_NVIC_SetPriority(RFM69_ISR_PIN_EXTI_IRQn, 5, 1); HAL_NVIC_EnableIRQ(RFM69_ISR_PIN_EXTI_IRQn); В прерываниии поставил печать, но ничего, ...пытаюсь просто подавать проводком 3.3 вольта на эту ногу и никакой реации. Кто делал внешнее прерывание на служебные ноги, может там еще надо какие то телодвижения в коде сделать? Что то очень давно помню что как то нужно JTAG ремапить, НО КАК это сделать с этим процом я не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба Может у вас печать не работает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба 29 minutes ago, inventor said: Что то очень давно помню что как то нужно JTAG ремапить, НО КАК это сделать с этим процом я не знаю. __HAL_AFIO_REMAP_SWJ_DISABLE(); пробовал делать? Но отладку ты тут же потряешь, да и проц будет шиться только под ресетом, коего на китайских программаторах обычно нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба 44 минуты назад, inventor сказал: В прерываниии поставил печать Стесняюсь спросить: каким образом? Уж не вызовом ли блокирующей функции? 44 минуты назад, inventor сказал: Что то очень давно помню что как то нужно JTAG ремапить, НО КАК это сделать с этим процом я не знаю. И мануал конечно же об этом молчит. печалька.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikl74 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба Насколько я понимаю, что по умолчанию PA13 AF0 это дебаг. В лоб ремапа как на 103 на этих процах кажется нет. Так что попробуйте установить какую-нибудь неиспользуемую альтернативную функцию, например 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба 5 minutes ago, mikl74 said: Так что попробуйте установить какую-нибудь неиспользуемую альтернативную функцию, например 2 Зачем, он же не выбирает альтернативную функцию, а использует ножку как GPIO input mode. В этом режиме все альтернативы отключаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба функции __HAL_AFIO_REMAP_SWJ_DISABLE() для L432 нет, сделал по примитивному просто кинул проводок на другую ногу и там сделал внешнее IRQ настраивал этот порт SWDIO на выход - меандр дает, а вот прерывания по входу никак не получаются. 1 hour ago, jcxz said: Стесняюсь спросить: каким образом? Уж не вызовом ли блокирующей функции? И мануал конечно же об этом молчит. печалька.... просто вывод в uart порт а есть разница если это просто на этапе отладки или какой нить неизвестный мне программистский талмуд это запрещает делать? в мануале и errate не нашел ничего Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба 28 minutes ago, inventor said: настраивал этот порт SWDIO на выход - меандр дает, а вот прерывания по входу никак не получаются. Вот, попробовал на STM32H743. Работает. Spoiler void EXTI15_10_IRQHandler(void) { // PA13 interrupt if( (EXTI_D1->PR1 & EXTI_PR1_PR13) == (EXTI_D1->IMR1 & EXTI_IMR1_IM13) ) { EXTI_D1->PR1 = EXTI_PR1_PR13; // clear pending interrupt if(GPIOA->IDR & GPIO_IDR_ID13) { dbg_pin_set(1); }else{ dbg_pin_reset(1); } } } void PA13_EXTI_init(void) { // Init PA13 pin as input RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN; GPIOA->MODER &= ~(GPIO_MODER_MODE13); // set to input mode GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPD13); // reset to No pull-up, pull-down GPIOA->PUPDR |= (GPIO_PUPDR_PUPD13_0); // set to pull-up enable //-------------------- // PA13 - external interrupt RCC->APB4ENR |= RCC_APB4ENR_SYSCFGEN; // PA4 interrupt select uint32_t syscfg_val; syscfg_val = SYSCFG->EXTICR[3]; syscfg_val &= ~(15UL << 4); // reset syscfg_val |= (0UL << 4); // set new value SYSCFG->EXTICR[3] = syscfg_val; EXTI->RTSR1 |= EXTI_RTSR1_TR13; // rising edge enable EXTI->FTSR1 |= EXTI_RTSR1_TR13; // falling edge enable EXTI_D1->EMR1 |= EXTI_IMR1_IM13; // EXTI_D1->IMR1 |= EXTI_IMR1_IM13; // pin interrupt enable EXTI_D1->PR1 = EXTI_PR1_PR13; // clear pending request NVIC_ClearPendingIRQ(EXTI15_10_IRQn); NVIC_SetPriority(EXTI15_10_IRQn, 1); NVIC_EnableIRQ(EXTI15_10_IRQn); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 9 сентября, 2021 Опубликовано 9 сентября, 2021 (изменено) · Жалоба Советую выкинуть hal, да почитать документацию! Вот, скачал свежийRM0394, на странице 1556 есть табличка - какие пины заняты при разной степени отключения JTAG/SWD. Оттуда же ссылочка на п. 8.3.2. Переходим, читаем. Подробней - в даташите. Ну и да, если у вас вызывается в прерывании блокирующая запись в UART — это, мягко говоря, нехорошо. Изменено 9 сентября, 2021 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба STM32H743. Это другой процессор. на 103 у меня тоже работает а на L432 не хочет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба 2 minutes ago, inventor said: STM32H743. Это другой процессор. на 103 у меня тоже работает а на L432 не хочет Просто у меня L432 вообще нет. Поэтому пробовал на чем было. Периферия у них у всех сильно похожая, местами даже одинаковая. Скорее всего у вас где-то какая-то ошибочка закралась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба Можно попробовать софтово возбудить exti-прерывание (EXTI_SWIER1), чтобы исключить вопросы к обработчику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 9 сентября, 2021 Опубликовано 9 сентября, 2021 · Жалоба не вызываетса ни програмно ни проводом с 3.3 вольт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться