Motor STM32F4 Discovery
Enviado por danniquut • 14 de Marzo de 2016 • Tarea • 291 Palabras (2 Páginas) • 139 Visitas
#include <stdio.h>
#include "STM32F4xx.h"
void delay();
void delay_2();
int main (void){
RCC -> AHB1ENR = 0x1F;
GPIOA -> MODER = 0x0;
GPIOB -> MODER = 0x0;
GPIOD -> MODER = 0x55000000;
GPIOC -> MODER = 0x1555;
GPIOE -> MODER = 0x1555;
int lap[4] = {0x1000, 0x2000, 0x4000, 0x8000}, s1,s2, y;
int display1[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}, display2[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int contador_1 = 0, contador_2 = 0, contador_3 = 0, contador_4 = 0, value = 0;
while(1){
s1 = GPIOA->IDR;
s2 = GPIOB->IDR;
s1 = s1&0x01;
s2 = s2&0x01;
if (s1 == 0x00){
if (value < 0){
value = 3;
}
else
value--;
GPIOD -> ODR = lap[value];
delay();
if (s2 == 0x01){
contador_1++;
GPIOC -> ODR = display1[contador_1];
delay_2();
if (contador_1 == 10){
contador_1 = 0;
contador_3++;
GPIOE -> ODR = display1[contador_3];
GPIOC -> ODR = display1[contador_1];
delay_2();
}
else
GPIOE -> ODR =display1[contador_3];
GPIOC -> ODR =display1[contador_1];
}
}
else
if(s1 == 0x01){
if(value > 3){
value = 0;
}
else
value++;
GPIOD -> ODR = lap[value];
delay();
if(s2 == 0x01){
contador_2++;
GPIOC -> ODR = display1[contador_2];
delay_2();
if (contador_2 == 10){
contador_4++;
contador_2 = 0;
GPIOC -> ODR = display1[contador_2];
GPIOE -> ODR = display1[contador_4];
delay_2();
}
else
GPIOE -> ODR = display1[contador_4];
GPIOC -> ODR = display1[contador_2];
}
}
}
}
void delay(){
for (int i = 0; i < 2000000; i++){};
}
void delay_2(){
for(int i = 0; i < 10000000; i++){};
}
...