
Hafta sonunda STM firmasının üretimi olan STM32VLDISCOVERY kartı ile çalışmak ve bazı uygulamaları geliştirmek istedim. Bu çalışmada www.picproje.com da üye olan, işinin erbabı hocalara teşekkürü bir borç bilirim.
Çalışmamın amacı saat frekansının ayarını öğrenmek ve DAC ile çalışma yapmaktı. Epey bir datasheet ve örnek çalışmaları inceledikten sonra olayı kavramaya başladım. A5 ve A4 pinleri analog çıkış olarak kullanılacak, kodlar içerisindeki Analog IN kafanızı karıştırmasın. DAC ın çalışması için bu pinlerin analog olarak giriş tanımlanması gerekiyor.
Aşağıda STM32VLDISCOVERY kartı görülmektedir. Bu kartın üzerinde stm32F100RB işlemcisi ve STlink bulunmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include "stm32f10x.c" void SystemInit(void) { RCC->CR |= 0x00010000; //HSEON=1High Speed External Osc ON while(!(RCC->CR & 0x00020000)); //Harici osilatörün stabil olması için bekleniliyor(6 komut çevrimi) RCC->CIR |= 0x00080000; //HSERDYC: HSE ready interrupt cleared RCC->CR |= 0x00080000; //Clock security system Enabled. RCC->CIR |= 0x00800000; //CSSC: Clock security system interrupt cleared. RCC->CR |= 0x00040000; //HSE bypassed. RCC->CFGR |= 0x00000080; //AHB configuration -> 1000: SYSCLK divided by 2 RCC->CFGR |= 0x00002000; //APB2 configuration -> 100: HCLK divided by 2 RCC->APB2ENR |= 0x0000001C; //PORT C,A,B Clock Enabled. //------------------------------------------------------------------------------------------------- RCC->APB1ENR |=0x20000000;//DAC Enable GPIOA->CRL &= 0x00000000; //Aportu analog giriş GPIOA->CRL |= 0x00000000; GPIOA->CRH &= 0x00000000; GPIOA->CRH |= 0x00000000; DAC->CR |=0x00000003; //DAC Channel1 Enable, Buffer Disable //------------------------------------------------------------------------------------------------- GPIOC->CRL &= 0x00000000; GPIOC->CRL |= 0x33333333; //PC0-7 Çıkış olarak ayarlandı (Max 50MHz) GPIOC->CRH &= 0x00000000; GPIOC->CRH |= 0x33333333; //PC8-15 Çıkış olarak ayarlandı (Max 50MHz) } void delay(int Z) { while(--Z); } main () { int Deger; while (1) // sonsuz döngü { Deger++; GPIOC->ODR=0xFFFFFFFF; delay(0x00000FFF); GPIOC->ODR=0x00000000; delay(0x00000FFF); DAC->DHR12R1=Deger; /* DACoutput=VREF * (dor/4095) */ } } |
Ziyaretci : 1054