Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main.c
- #include "main.h"
- void InitLed(void);
- void InitBtn (void);
- void EXTI9_5_IRQHandler(void)
- {
- uint32_t i;
- if ((EXTI->PR & EXTI_PR_PR9)>0)
- {
- for (i=0;i<0xFFFFF; i++);
- if (LED1_IS_ON)
- LED1_OFF();
- else
- LED1_ON();
- EXTI->PR |=EXTI_PR_PR9; //сбросили флаг
- }
- }
- void InitLed(void)
- {
- RCC->APB2ENR |=RCC_APB2ENR_IOPDEN;
- // PD13-> vixod Push-Pull 2Mhz
- GPIOD->CRH &= ~GPIO_CRH_CNF13; //CNF [1:0]= 00
- GPIOD->CRH &= ~GPIO_CRH_MODE13_0;
- GPIOD->CRH |= GPIO_CRH_MODE13_1; //MODE[1:0] = 10
- }
- void InitBtn(void)
- {
- RCC->APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN ; //тактирование порта и альтернативной функции на портах ввода/вывода
- // PB9-> вход с подтяжкой к Vdd
- GPIOB->CRH &= ~GPIO_CRH_MODE9;
- GPIOB->CRH &= ~GPIO_CRH_CNF9_0;
- GPIOB->CRH |= GPIO_CRH_CNF9_1;
- GPIOB->BSRR |= GPIO_BSRR_BS9;
- AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI9_PB ;// [1] это 2, [0] это 1 порт. Настройка альтернативной функции
- EXTI->IMR |= EXTI_IMR_MR9;//включение маски по 9 ножке
- EXTI->FTSR |= EXTI_FTSR_TR9; // int по спаду
- NVIC_EnableIRQ(EXTI9_5_IRQn);
- NVIC_SetPriority(EXTI9_5_IRQn, 0);
- }
- main.h
- #ifndef __MAIN_H
- #define __MAIN_H
- #include "stm32f10x.h" // Device header
- #define LED1_ON() GPIOD->BSRR |= GPIO_BSRR_BS13
- #define LED1_OFF() GPIOD->BSRR |= GPIO_BSRR_BR13
- #define LED1_IS_ON (GPIOD->ODR & GPIO_ODR_ODR13)>0
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement