Oldu mu bu şimdi ? - Hangisi daha mantıklı ?

Başlatan baran123, 08 Haziran 2015, 20:31:52

baran123

Bir projemde GPIO hazırlama yapıyorum.SPI1-SPI2-USART1 falan filan.Portlar farklı olduğundan ayarları baştan yapmam gerekiyor böylece çok uzun uzun yazmak zorunda kalıyorum.Bunun yerine registerlar dan yapmak mı daha mantıklı

Mesela şöyle kullandım.
***********************************************************
* Function Name  : GPIO_Configuration
* Description    : GPIO ve AF ayarları yapılandırılır.
* Input          : void
* Return         : void
***********************************************************/
static void GPIO_Configuration(void)
{
    GPIO_InitTypeDef   GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType   = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Pin     = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_PuPd    = GPIO_PuPd_NOPULL;
    GPIO_InitStructure.GPIO_Speed   = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = SPI1_PIN_PACK;
    GPIO_InitStructure.GPIO_Mode   = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType  = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = USART1_PIN_PACK;
    GPIO_InitStructure.GPIO_Mode   = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType  = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_UP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = SPI2_PIN_PACK;
    GPIO_InitStructure.GPIO_Mode   = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType  = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode   = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType  = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0); //SPI1 MOSI
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0); //SPI1 MISO
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0); //SPI1 SCK

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_5);//SPI2
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_5);//SPI2
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_5);//SPI2

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); //USART1 TX
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_1); //USART1 RX
}

MrDarK

Alıntı yapılan: Baran Ekrem - 08 Haziran 2015, 20:31:52
Bir projemde GPIO hazırlama yapıyorum.SPI1-SPI2-USART1 falan filan.Portlar farklı olduğundan ayarları baştan yapmam gerekiyor böylece çok uzun uzun yazmak zorunda kalıyorum.Bunun yerine registerlar dan yapmak mı daha mantıklı

Mesela şöyle kullandım.


***********************************************************
* Function Name  : GPIO_Configuration
* Description    : GPIO ve AF ayarları yapılandırılır.
* Input          : void
* Return         : void
***********************************************************/
static void GPIO_Configuration(void)
{
    GPIO_InitTypeDef   GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType   = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Pin     = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_PuPd    = GPIO_PuPd_NOPULL;
    GPIO_InitStructure.GPIO_Speed   = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = SPI1_PIN_PACK;
    GPIO_InitStructure.GPIO_Mode   = GPIO_Mode_AF;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = USART1_PIN_PACK;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = SPI2_PIN_PACK;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin    = GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0); //SPI1 MOSI
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0); //SPI1 MISO
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0); //SPI1 SCK

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_5);//SPI2
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_5);//SPI2
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_5);//SPI2

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); //USART1 TX
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_1); //USART1 RX
}


Bu şekilde de olur :)
Picproje Eğitim Gönüllüleri ~ MrDarK

Gökhan BEKEN

Özel mesaj okumuyorum, lütfen göndermeyin.

baran123

Karar verdim.Dibinden yapacam !  8)
Hocam cubemx de bu ara görüyorum hep bir bakayım.
RaMu Hocam bir yazı yazmıştı bununla ilgili.

muhittin_kaplan

@Mdark SPI2_PIN_PACK ler nerede tanımlı Hocam

ayrıca baran ben genelde uzun uzadıya yazıyorum. şimdi projeden projeye atladığından sıkıcı geliyor, ama bir projeyle aylarca uğraştığında birkez yapacak kenara koyacaksın.

baran123

main.h da tanımlı hocam
#define SPI1_PIN_PACK     GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
#define SPI2_PIN_PACK     GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15
#define USART1_PIN_PACK   GPIO_Pin_9 | GPIO_Pin_10

Anladım ;)

muhittin_kaplan

nedense Kulağımı Oradan Oraya Tutmaktansa "herşey gözümün önünde olsun" cuyum ben.

MrDarK

Hocam nerede tanımlı olduğunu bilmiyorum baranın projesi içindedir illaki, ben kodu kısalttım sadece
Picproje Eğitim Gönüllüleri ~ MrDarK