STM32F0 Discovery kiti USART1 sorunu

Başlatan ali.bayuk, 19 Haziran 2014, 20:48:56

ali.bayuk

Arkadaşlar kolay gelsin,
STM32F0 Discovery kitimle bişeyler yazmaya çalışıyorum. USART2 yi rahatlıkla kullanabiliyorum fakat ne yaptıysam USART1 i kullanamadım. Kodu aşağıya ekledim. Hatanın nerede olduğunu görebilirseniz çok mutlu olurum. Kafama takıldı uyuyamaz oldum.
#include <stdint.h>
#include <system_stm32f0xx.h>
#include <stm32f0xx_gpio.h>
#include <stm32f0xx_rcc.h>
#include <stm32f0xx_usart.h>
#include <stm32f0xx_misc.h>

void uart_send_char(char chr);
void uart_send_string(unsigned char *string);

void USART1_IRQHandler(void)
{
	char temp;
	temp=USART_ReceiveData(USART1);
	uart_send_char(temp);
}

void uart_send_char(char chr)
{
	while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
	USART_SendData(USART1, chr);
}

void uart_send_string(unsigned char *string)
{
    while(*string)
    {
    	uart_send_char(*string);
        *string++;
    }
}

int main (void)
{
	uint32_t times;
	USART_InitTypeDef USART_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	NVIC_InitTypeDef NVIC_InitStruct;

	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

	RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

	GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

	//Configure USART1 pins:  Rx and Tx ----------------------------
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9 | GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	//Configure USART1 setting:         ----------------------------
	USART_InitStructure.USART_BaudRate = 9600;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	USART_Init(USART1, &USART_InitStructure);

	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

	NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStruct);

	USART_Cmd(USART1,ENABLE);

	uart_send_string("BASLA!\r\n");

	while(1)
	{
		uart_send_string("Merhaba Dunya!\r\n");
		for(times = 0; times < 5000000; times++);
	}

	return 0;
}

Teşekkürler.

ali.bayuk

arkadaşlar kimse bir hata göremedi mi?

pisayisi

PA9 VE PA10 Pinleri dahili olarak stlink çipine bağlı görünüyor, bu nedenle sorun çıkıyor olabilir. Sb14 ve Sb15 lehim köprüleri ile jp1 jakına bakarak bu pinlerin dıştaki tanımlı pinlere bağlı olup olmadığını da inceleyebilir, yada stlink ile usart1 bağlantısını ayırabilirsin...
Murat

ali.bayuk

hocam yanıtınız için teşekkür ederim,
bende kendi üzerinde bir yerlere gidiyordur diye düşünmüştüm fakat onunla ilgili bir şeyler bulamamıştım. peki şu yolu denedim PB6 ve PB7 olarak kullandım usart1'i.bunun için sadece pin tanımlamasını değiştirdim yine olmadı. acaba usart1 ayarlarında da bir değişiklik yapmam gerekir mi?
cevaplarınız için şimdiden teşekkür ederim.

MC_Skywalker

pisayisi'nın da dediği gibi bazı pinler kart üsütün de kullanılıyor.


ali.bayuk

cevaplarınız için çok teşekkür ederim, ellerinize sağlık.