Jump to content
Sign in to follow this  
Guest Cianid

Не срабатывает прерывание STM32F446

Recommended Posts

Guest Cianid

Всех приветствую. Столкнулся с проблемой обработки прерывания. При нажатии кнопки не вызывается обработчик. При этом в дебаге вижу появление флага в регистре PR при нажатии кнопки. 


#include "stm32f4xx.h"


void spi_init() {
	
	RCC->APB2ENR  |= RCC_APB2ENR_SPI1EN;
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
	GPIOB->AFR[0] |= (0x05<<4*3) ; // Enable SPI (CLK) as AF
	GPIOB->AFR[0] |= (0x05<<4*5); // Enable SPI (MOSI) as AF

  GPIOB->MODER &= ~(0xFFFF);

	SPI1->CR1 = 1<<SPI_CR1_DFF_Pos 
    | 0<<SPI_CR1_LSBFIRST_Pos     
    | 1<<SPI_CR1_SSM_Pos         
    | 1<<SPI_CR1_SSI_Pos         
    | 0x04<<SPI_CR1_BR_Pos       
    | 1<<SPI_CR1_MSTR_Pos       
    | 0<<SPI_CR1_CPOL_Pos 
	  | 0<<SPI_CR1_CPHA_Pos; 
	SPI1->CR1 |= 1<<SPI_CR1_SPE_Pos;
}

void spi_write(uint16_t data)
{
  while(!(SPI1->SR & SPI_SR_TXE));
  SPI1->DR = data;
}

void port_led_init () {
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
	GPIOA->MODER |= GPIO_MODER_MODE5_0;
	GPIOA->OTYPER |= GPIO_OTYPER_OT_0;
	GPIOA->OSPEEDR = 0;
	GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_0;
}

void interrupt_init () {
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
	RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
	GPIOC->PUPDR |= GPIO_PUPDR_PUPD13_0;
	__NVIC_EnableIRQ(EXTI3_IRQn);

	SYSCFG->EXTICR[3] &= ~SYSCFG_EXTICR4_EXTI13;
	SYSCFG->EXTICR[3] |= SYSCFG_EXTICR4_EXTI13_PC;

	EXTI->FTSR |= EXTI_FTSR_TR13;
	EXTI->RTSR |= EXTI_RTSR_TR13;
	EXTI->IMR |= EXTI_IMR_IM13;

}



int main(void)
{
	spi_init();	
	port_led_init();
	interrupt_init();

}

void EXTI3_IRQHandler () {
		if (EXTI->PR & EXTI_PR_PR13) {
		EXTI->PR |= EXTI_PR_PR13;

		spi_write(0xAB);
		spi_write(0x14);		

		
		for (int i =0; i<1000000; ++i) {
			GPIOA->ODR |= GPIO_ODR_OD5;
	}
		for (int i =0; i<1000000; ++i) {
			GPIOA->ODR = 0;
	}
}
	
}

Share this post


Link to post
Share on other sites

Стесняюсь спросить, а где главный цикл? while(1) -  где?

:crazy:

Share this post


Link to post
Share on other sites
Guest Cianid

Забыл вставить, там обычная мигалка крутится.

Там есть цикл с мигалкой. Просто забыл добавить сюда.

Share this post


Link to post
Share on other sites

Вебинар «STM32L5. Секреты оценки энергопотребления» (05.11.2020)

Компания КОМПЭЛ приглашает 5 ноября принять участие в вебинаре, посвященном первому семейству МК STM32L5 на ядре Cortex-M33. На вебинаре будет рассказано об ошибках при расчете энергопотребления МК с помощью отладки STM32L562E-DK. Отладки STM32L562E-DK будут разыгрываться среди участников. Информация об условиях участия будет озвучена на вебинаре.

Подробнее

Должен быть обработчик прерывания: EXTI15_10_IRQHandler и разрешать __NVIC_EnableIRQ(EXTI15_10_IRQn); соответственно.

Share this post


Link to post
Share on other sites

Как снизить потери мощности на 30%? Транзисторы SiC MOSFET.

Прогресс в области широкозонных полупроводниковых материалов позволил создать карбид-кремниевые полевые транзисторы (SiC MOSFET) с повышенной рабочей частотой, обеспечивающие меньшие потери на переключение. Усовершенствованные корпуса с малой паразитной индуктивностью, в которых выпускаются такие транзисторы, позволяют разработчикам в полной мере использовать возможности этих компонентов для увеличения КПД силовых преобразователей.

Подробнее

Нейросети в STM32G4 - пошаговое руководство!

Наличие программного пакета X-CUBE-AI, расширяющего функционал STM32CubeMX, поможет разработчику построить искусственную нейросеть на базе микроконтроллера из линейки STM32G4 производства STMicroelectronics. Статья включает пошаговое описание реализации такой нейросети.

Подробнее

Guest MasterElectric
09.08.2020 в 13:23, my504 сказал:

Стесняюсь спросить, а где главный цикл? while(1) -  где?

да он в стартапе))

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Агрегат не для начинающих. Посему и    
    • Урок по зоологии в институте. Профессор берёт какую-то птицу в руки, поворачивает её хвостом к студенту и говорит: "Узнаёте?" Студент: "Нет". Профессор берёт другую птицу, и так же хвостом её: "Узнаёте?". Студент: "Ээээ, нет!". Профессор: "Садитесь, два! Постойте, а как Ваша фамилия?". Студент поворачивается задом к профессору и снимает штаны: "Узнайте!".   @AdmiralBlack, и ни слова о том, откуда хотя бы выдрано...
    • А откуда перемагничивание, если нет звука на выходе. Он не должен перемагничиваться с ваших слов , должен быть холодный. Дак откуда берётся ток на перемагничивание?
    • Как по мне, то годится, но я не спец в этом. Или так P.S. Кстати, а почему ты не поставишь смд конденсатор вместо неполярного электролита? У Линкса там именно смд
    • Спиртом можно фотобарабан протирать от скотча,только аккуратно,потом насухо мягкой х/б тканью до блеска.Ничего страшного не случится.
    • С тирами ошибочка вышла, в действительности ВТ152  NXP Конденсаторная - это цельный чемодан электролитов К2000m * 50v плюс куча переключателей для выбора режима сварки и зарядки. По началу никак не мог приварить болтик М3 с потайной головкой к милиметровому железу, то болтик исчезал, то в железе дырка получалась. После того как научился подбирать емкость и напряжение сварки все стало ОК. Две пачки лезвий и три иголок ушло но приварить удалось. Лезвия варились не все. У меня контактная сварка варить два по 0,8мм больше не тянет ток где то около 1500А, пятно 4-5 мм. С контактным пятном 2мм вытягивает до 1мм, но быстро горят электроды. Брал два жала от паяльников диаметр 10 мм. затачивал под конус. Наверное медь не чистая имеет желтый оттенок. Интересно, а какой ток у Вас?  Уже точно  и  не помню но у нас на работе трехфазная сварка давала 22000А  и то кажется тянула два по 3мм. а два по 6мм это надо чтоб было ОГО ГО. 

  • Двусторонний теплопроводящий скотч. Ширина 8, 10, 12 или 20мм. Длина намотки 5, 10 или 25м

×
×
  • Create New...