STM32F103RB ADC Uygulaması

Başlatan altunalperr, 28 Eylül 2018, 00:46:48

altunalperr

Merhaba,
STM32F103RB üzerinden bir adc uygulaması yapmaya çalışıyorum fakat aşağıda yıldızlı olarak belirttiğim yerlerde sıkıntı var. 
**ADC_CommonInitTypeDef ADC_CommonInitStructure; Burada  identifier "ADC_CommonInitTypeDef" is undefined diye bir hata alıyorum. Acaba bir kütüphane filan mı eklemem gerekiyor?

**GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;  Burada Mode_AN olarak belirtemiyorum. #20: identifier "GPIO_Mode_AN" is undefined diye bir hata alıyorum.

Yardımlarınızı bekliyorum.


#include "stm32f10x.h"                  // Device heade

int main()
{
   uint16_t adc_data; //12 bitlik adc verisini bulunduracak
   
   GPIO_InitTypeDef GPIO_InitStructure;
   ADC_InitTypeDef ADC_InitStructure;
   **ADC_CommonInitTypeDef ADC_CommonInitStructure;
   
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
   
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
   
   **GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
   GPIO_Init(GPIOC, &GPIO_InitStructure);
   
}

mehmet

Mesajınıza kod eklerken "kod"
butonunu kullanınız ve mesajınızı
yeniden düzenleyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

magnetron

#include stm32f10x_adc.h ekli mi include 'larda

ve bu kodları yazdığın c dosyasında ?

altunalperr

Alıntı yapılan: magnetron - 29 Eylül 2018, 11:20:09#include stm32f10x_adc.h ekli mi include 'larda

ve bu kodları yazdığın c dosyasında ?

evet main.c dosyasında ve include 'da ekli

baran123


altunalperr

Alıntı yapılan: baran123 - 02 Ekim 2018, 04:37:10AN değil AIN olmasi lazim.

Çok teşekkür ederim dediğiniz gibi yaptığımda hata düzeldi. Fakat ilk kısımdaki hata hala duruyor. Bunun hakkında bir bilginiz var mı acaba?
Birde şunu sormak istiyorum acaba AIN olması gerektiğini nerden anlamam gerekiyor? User manual vs nereye bakmam lazım?

baran123

Bunu öğrenmen için herhangi bir dökümana ihtiyaç yok.
Hangi IDE kullanıyorsun bilmiyorum ama bu özellik hepsinde var.
"Kod tamamlama" özelliğini kullanabilirsin.
GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_
Yazdıktan sonra CTRL+SPACE yaparak tamamlama kısmını açıp bakabilirsin.
Diğer hatayı anlamadım.
Zaten STM32F1 kütüphanelerinde ADC_CommonInitTypeDef böyle bir tanımlama olmaz.
Ben ADC için genel konfigürasyonu şöyle yapmıştım.

ADC_InitTypeDef ADC_InitStructure;

RCC_ADCCLKConfig(RCC_PCLK2_Div2);

ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStructure);

ADC_InitStructure.ADC_Mode                  = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode          = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode    = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv      = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign             = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel          = ADC_NUMBER_OF_CHANNEL;

ADC_Init(ADC1, &ADC_InitStructure);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));

ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_41Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 2, ADC_SampleTime_41Cycles5);

altunalperr

Alıntı yapılan: baran123 - 02 Ekim 2018, 21:14:21Bunu öğrenmen için herhangi bir dökümana ihtiyaç yok.
Hangi IDE kullanıyorsun bilmiyorum ama bu özellik hepsinde var.
"Kod tamamlama" özelliğini kullanabilirsin.
GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_
Yazdıktan sonra CTRL+SPACE yaparak tamamlama kısmını açıp bakabilirsin.
Diğer hatayı anlamadım.
Zaten STM32F1 kütüphanelerinde ADC_CommonInitTypeDef böyle bir tanımlama olmaz.
Ben ADC için genel konfigürasyonu şöyle yapmıştım.

ADC_InitTypeDef ADC_InitStructure;

RCC_ADCCLKConfig(RCC_PCLK2_Div2);

ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStructure);

ADC_InitStructure.ADC_Mode                  = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode          = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode    = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv      = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign             = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel          = ADC_NUMBER_OF_CHANNEL;

ADC_Init(ADC1, &ADC_InitStructure);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));

ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_41Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 2, ADC_SampleTime_41Cycles5);

tamamdır çok teşekkür ederim:)