23 Eylül 2019, 11:30:44

Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME


STM32F4 DİSCOVERY KARTI İLE ARM PROGRAMLAMA DERSLERİ

Başlatan mfatihkoseoglu, 11 Haziran 2019, 01:49:57

mfatihkoseoglu

11 Haziran 2019, 01:49:57 Son düzenlenme: 11 Haziran 2019, 01:51:10 mfatihkoseoglu
Merhaba arkadaşlar, yeterli türkçe kaynağın olmadığı bu alanda bir nebze de benim katkım olsun diye, youtube üzerinden derslere başladım. Derslerde, registerlar/ Std periph kütüphaneleri / hal kütüphaneleri kullanarak mantığını kavramaya/kavratmaya çalışıyorum. Sizlerinde desteklerini bekliyorum. Umarım hepimiz için faydalı bir ders serisi olur. İyi çalışmalar dilerim. (Abone olmayı unutmayınız)

Ders 1: Gömülü Sistem Nedir?



mfatihkoseoglu

Mikroişlemci Nedir Ve Nasıl Çalışır? #Ders2


mfatihkoseoglu

Mikrodenetleyici Nedir Ve Nasıl Çalışır? #Ders3


mfatihkoseoglu

STM32F407VG DİSCOVERY BOARD TANITIMI #Ders4


mfatihkoseoglu

STM32F4 Programlamak İçin Gerekli Olan Dosyaların İndirilmesi #Ders5


mfatihkoseoglu

ATOLLIC TRUE STUDİO VE DİĞER PROGRAMLARIN KURULMASI #Ders6


mfatihkoseoglu

STM32F4 DISCOVERY CLOCK CONFİGURASYON VE PLL AYARLARI #Ders7


mfatihkoseoglu

STM32F4 İçin STM32CubeMx ile Clock Configurasyonu #Ders8


mfatihkoseoglu

STM32F4 İçin Registerlar ile Clock Configurasyonu #Ders9


mfatihkoseoglu

STM32F407VG İle Led Blink Uygulaması Registerlar İle #Ders10


Tagli

Videolarınız güzel olmuş, elinize sağlık. Şahsen ben de Cube kullanmadan doğrudan register seviyesinde programlamayı tercih ediyorum.

Ancak her bit için hesap makinesine bakmak zorunda değilsiniz. Hem bu şekilde yazıldığında kodun okunurluğu büyük ölçüde azalıyor. Bunun yerine header dosyalarında ön tanımlanmış bit isimlerini kullanmak daha iyi olacaktır. Elbette bu şekilde kod daha ekranda (işlemci hafızasında değil) daha çok satır kaplayacaktır ama bu sorun değil bence.

Aşağıda STM32F407VG için örnek bir clock ve GPIO ayar kodu var. Kod bu şekilde yazıldığında, sadece koda bakarak hangi bacağın ne işe yaradığını belirlemek daha kolay olacaktır.
	
// Enabling Clock Signals
	
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN // Enable PortA
	
	
	
RCC_AHB1ENR_GPIOBEN // Enable PortB
	
	
	
RCC_AHB1ENR_GPIODEN // Enable PortD
	
	
	
RCC_AHB1ENR_DMA1EN// Enable DMA1
	
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN // Enable TIM3
	
	
	
RCC_APB1ENR_TIM6EN // Enable TIM6
	
	
	
RCC_APB1ENR_SPI2EN // Enable SPI2
	
	
	
RCC_APB1ENR_USART2EN// Enable USART2
	
// USB Clock is activated in its own module

// GPIO Settings
	
GPIOA->AFR[0] |= (<< GPIO_AFRL_AFSEL2_Pos// PA2: (AF7) USART2 TX
	
	
	
| (
<< GPIO_AFRL_AFSEL3_Pos); // PA3: (AF7) USART2 RX
	
GPIOA->AFR[1] |= (10 << GPIO_AFRH_AFSEL11_Pos// PA11: (AF10) OTG_FS_DM
	
	
	
| (
10 << GPIO_AFRH_AFSEL12_Pos); // PA12: (AF10) OTG_FS_DP
	
GPIOA->MODER |= (0b10 << GPIO_MODER_MODE2_Pos// PA2: (AF7) USART2 TX
	
	
	
| (
0b10 << GPIO_MODER_MODE3_Pos// PA3: (AF7) USART2 RX
	
	
	
| (
0b10 << GPIO_MODER_MODE11_Pos// PA11: (AF10) OTG_FS_DM
	
	
	
| (
0b10 << GPIO_MODER_MODE12_Pos); // PA12: (AF10) OTG_FS_DP
	
GPIOA->PUPDR |= (0b01 << GPIO_PUPDR_PUPD3_Pos); // PA3: (PU) USART2 RX
	
GPIOA->OSPEEDR |= (0b01 << 4// PA2: (Medium Speed) USART2 TX
	
	
	
| (
0b01 << 22// PA11: (Medium Speed) OTG_FS_DM
	
	
	
| (
0b01 << 24); // PA12: (Medium Speed) OTG_FS_DP

Gökçe Tağlıoğlu

bit01

İçerikler çok güzel ve anlaşılır. Register düzeyinde çalışıp, hal liblerle hiç uğraşmadan detaylı projelerle usart, spi, i2c, dac, pwm vs her konuya değinilirse türkçe en sağlam kaynak olur bence. Ayrıca döküman üzerinden her konunun gösterilmesi çok güzel. Bir çok kişi eğitim çekiyor ama yarım kalıyor hep. İnşallah devam edersiniz. Kolay gelsin emeğinize sağlık.

mfatihkoseoglu

Alıntı yapılan: Tagli - 14 Haziran 2019, 19:36:18Videolarınız güzel olmuş, elinize sağlık. Şahsen ben de Cube kullanmadan doğrudan register seviyesinde programlamayı tercih ediyorum.

Ancak her bit için hesap makinesine bakmak zorunda değilsiniz. Hem bu şekilde yazıldığında kodun okunurluğu büyük ölçüde azalıyor. Bunun yerine header dosyalarında ön tanımlanmış bit isimlerini kullanmak daha iyi olacaktır. Elbette bu şekilde kod daha ekranda (işlemci hafızasında değil) daha çok satır kaplayacaktır ama bu sorun değil bence.

Aşağıda STM32F407VG için örnek bir clock ve GPIO ayar kodu var. Kod bu şekilde yazıldığında, sadece koda bakarak hangi bacağın ne işe yaradığını belirlemek daha kolay olacaktır.
	
// Enabling Clock Signals
	
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN // Enable PortA
	
	
	
RCC_AHB1ENR_GPIOBEN // Enable PortB
	
	
	
RCC_AHB1ENR_GPIODEN // Enable PortD
	
	
	
RCC_AHB1ENR_DMA1EN// Enable DMA1
	
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN // Enable TIM3
	
	
	
RCC_APB1ENR_TIM6EN // Enable TIM6
	
	
	
RCC_APB1ENR_SPI2EN // Enable SPI2
	
	
	
RCC_APB1ENR_USART2EN// Enable USART2
	
// USB Clock is activated in its own module

// GPIO Settings
	
GPIOA->AFR[0] |= (<< GPIO_AFRL_AFSEL2_Pos// PA2: (AF7) USART2 TX
	
	
	
| (
<< GPIO_AFRL_AFSEL3_Pos); // PA3: (AF7) USART2 RX
	
GPIOA->AFR[1] |= (10 << GPIO_AFRH_AFSEL11_Pos// PA11: (AF10) OTG_FS_DM
	
	
	
| (
10 << GPIO_AFRH_AFSEL12_Pos); // PA12: (AF10) OTG_FS_DP
	
GPIOA->MODER |= (0b10 << GPIO_MODER_MODE2_Pos// PA2: (AF7) USART2 TX
	
	
	
| (
0b10 << GPIO_MODER_MODE3_Pos// PA3: (AF7) USART2 RX
	
	
	
| (
0b10 << GPIO_MODER_MODE11_Pos// PA11: (AF10) OTG_FS_DM
	
	
	
| (
0b10 << GPIO_MODER_MODE12_Pos); // PA12: (AF10) OTG_FS_DP
	
GPIOA->PUPDR |= (0b01 << GPIO_PUPDR_PUPD3_Pos); // PA3: (PU) USART2 RX
	
GPIOA->OSPEEDR |= (0b01 << 4// PA2: (Medium Speed) USART2 TX
	
	
	
| (
0b01 << 22// PA11: (Medium Speed) OTG_FS_DM
	
	
	
| (
0b01 << 24); // PA12: (Medium Speed) OTG_FS_DP



Sayın hocam cevap için teşekkür ederim, bilmeyen arkadaşlar için daha anlaşılır olsun diye hesap makinesi ile gösteriyorum, yani seviyeyi çok daha temel tutuyorum. Yine de tavsiyelerinizi dikkate alacağım.

mfatihkoseoglu

Alıntı yapılan: bit01 - 15 Haziran 2019, 14:32:09İçerikler çok güzel ve anlaşılır. Register düzeyinde çalışıp, hal liblerle hiç uğraşmadan detaylı projelerle usart, spi, i2c, dac, pwm vs her konuya değinilirse türkçe en sağlam kaynak olur bence. Ayrıca döküman üzerinden her konunun gösterilmesi çok güzel. Bir çok kişi eğitim çekiyor ama yarım kalıyor hep. İnşallah devam edersiniz. Kolay gelsin emeğinize sağlık.

Hocam teşekkür ederim, malesef o dersler deki eksikleri gördüğüm için bu tarzda ilerliyorum, umarım faydası olur. Güzel yorumunuz için teşekkür ederim. İyi çalışmalar.

mfatihkoseoglu

STM32F407VG İle Led Blink Uygulaması STDPeriph Kütüphaneleri İle #Ders11