MikroC-ARM STM32f407-HC-SR04 Ultrasonik Sensör Mesafe Ölçümü..

Başlatan LukeSkywalker, 13 Ocak 2014, 19:48:42

LukeSkywalker

int sayac=116,uzaklik=1000;
char readbuff[64];
char writebuff[64];
char yuzler,onlar,birler;

void InitTimer7(){
  RCC_APB1ENR.TIM7EN = 1;
  TIM7_CR1.CEN = 0;
  TIM7_PSC = 0;
  TIM7_ARR = 83;
  NVIC_IntEnable(IVT_INT_TIM7);
  TIM7_DIER.UIE = 1;
}

void Timer7_interrupt() iv IVT_INT_TIM7 {
  TIM7_SR.UIF = 0;
  sayac++;
}

void main() {
InitTimer7();
HID_Enable(&readbuff,&writebuff);
GPIO_Digital_Output(&GPIOB_BASE, _GPIO_PINMASK_0);
GPIO_Digital_Input(&GPIOB_BASE, _GPIO_PINMASK_1);
while(1)
        {
         GPIOB_ODR.B0=1;
         delay_us(10);
         GPIOB_ODR.B0=0;
         while(GPIOB_IDR.B1==0);
         TIM7_CR1.CEN = 1;
         while(GPIOB_IDR.B1);
         TIM7_CR1.CEN=0;
         TIM7_CNT=0;
         uzaklik=sayac/58;
         sayac=0;
         yuzler=(uzaklik/100)+48;
         onlar=((uzaklik/10)%10)+48;
         birler=(uzaklik%10)+48;
         delay_ms(500);
         writebuff[0]=yuzler;
         writebuff[1]=onlar;
         writebuff[2]=birler;
         writebuff[3]=' ';
         writebuff[4]='c';
         writebuff[5]='m';
         writebuff[6]='.';
         writebuff[7]='\r';
         writebuff[8]='\n';
         HID_Write(&writebuff,64);
        }
}

void usb_kesme() iv IVT_INT_OTG_FS ics ICS_AUTO {
USB_Interrupt_Proc();
}


HID terminal üzerinden mesafeyi görebiliriz. Tabi burada USBdsc.c dosyasını veremedim. Bunu HID Terminal aracından kendiniz oluşturup projenize dahil edebilirsiniz.

kantirici

hocam mikroc ARM da işler nasıl yürüyor? Registerlere hiç bulaşmadan kod yazabiliyormuyuz ccs c gibi?

LukeSkywalker

Çoğu kütüphanede registerlara bulaşmıyoruz. ADC, PWM vs....
Ama registerlara illaki işimiz düşüyor programlama esnasında...