Академический Документы
Профессиональный Документы
Культура Документы
h"
#include "cmsis_lib/include/stm32f30x_rcc.h"
#include "cmsis_lib/include/stm32f30x_usart.h"
void delay_s(int s)
{
RCC -> APB1ENR |= 0x1 << 4; //TIM6
TIM6 -> PSC = 36000-1;
TIM6 -> ARR = (s*2000-1);
TIM6 -> CNT = 0;
TIM6 -> EGR |= 0x1;
TIM6 -> SR &= ~(0x1);
TIM6 -> CR1 |= 0x1; //Vkluci tajmerot
while((TIM6 -> SR & 0x1) == 0);
TIM6 -> SR &= ~(0x1);
TIM6 -> CR1 &= ~(0x1);
RCC -> APB1ENR &= ~(0x1 << 4); //Iskluci clock za TIM6
}
EXTI -> PR |= (0x1 << 1); //Resetiraj pending bit za EXTI1 interrupt-ot
}
//motion sensor:
RCC -> AHBENR |= (0x1 << 17); //PortA
GPIOA -> MODER &= ~(0x3 << 2); //PA1
//motion sensor INTERRUPT
RCC -> APB2ENR |= 0x1; //SYSCFGR
SYSCFG -> EXTICR[0] &= ~(0x7 << 4); //Mapiranje na PA1 na linija EXTI1
EXTI -> IMR |= (0x1 << 1); //Postavi linija EXTI1 kako not masked
EXTI -> RTSR |= (0x1 << 1); //Postavi aktivna ivica na rastecka
SCB -> AIRCR = 0x05FA0000 | (0x5 << 8); //2 bita group, 2 bita sub priority
NVIC -> IP[7] = 0xA << 4; //1010b = (2,2) prioritet
NVIC -> ISER[0] |= (0x1 << 7); //Ovozmozi go interrupt EXTI1
//kopce
GPIOA -> MODER &= ~(0x3); //PA0 input
GPIOA -> OSPEEDR |= 0x3; //Postavuvanje na brzinata na pin PA0 (Button B1) na
high speed
GPIOA -> PUPDR |= 0x2; //pull-down
//kopce INTERRUPT
SYSCFG -> EXTICR[0] &= ~(0x7); //Mapiranje na PA0 na linija EXTI0
EXTI -> IMR |= (0x1); //Postavi linija EXTI0 kako not masked
EXTI -> RTSR |= (0x1); //Postavi aktivna ivica na rastecka
NVIC -> IP[6] = 0x5 << 4; // 0101 = (1,1) prioritet
NVIC -> ISER[0] |= (0x1 << 6);
while(1)
{
}
}