Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 30.04.2014, 22:50  
IvanAlyaev
Прохожий
 
Регистрация: 30.04.2014
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
IvanAlyaev на пути к лучшему
По умолчанию STM32F205RB Проблемы с USART

Здравствуйте. Имеется плата с контроллером STM32F205RB. Возникла проблема с UART. Хочу для начала передать обычную фразу "Hello World" по USART на компьютер. Настроил работу от внешнего кварца, использовал PLL и сделал частоту 100 МГц. Настроил USART. Плата подключается к компьютеру через преобразователь USB-UART PL-2303. На компьютере для отображения данных используется программа Terminal. Проблема в том, что Terminal принимает какие-то непонятные символы, хотя скорости везде одинаковые поставил - 9600. Код программы приведён ниже.

Код:
#include ‹STM32F2xx.h›
#include ‹system_stm32f2xx.h›
#include ‹stm32f2xx_rcc.h›
#include ‹stm32f2xx_gpio.h›
#include ‹stm32f2xx_spi.h›
#include ‹stm32f2xx_usart.h›
#include ‹stdio.h›

void ClockSetup(void) {
	RCC_DeInit();
	RCC-›CR |= ((uint32_t)RCC_CR_HSEON);
	while((RCC-›CR & RCC_CR_HSERDY) == 0){}
	FLASH-›ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_3WS;
	RCC-›CFGR |= RCC_CFGR_HPRE_DIV1;
	RCC-›CFGR |= RCC_CFGR_PPRE2_DIV2;
	RCC-›CFGR |= RCC_CFGR_PPRE1_DIV4;
	RCC-›PLLCFGR = 0x25403214;
	RCC-›CR |= RCC_CR_PLLON;
	while((RCC-›CR & RCC_CR_PLLRDY) == 0){}
	RCC-›CFGR |= RCC_CFGR_SW_PLL;
	while ((RCC-›CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL){}
}

void USART1Setup(void) {
	USART_InitTypeDef URT1;
	GPIO_InitTypeDef PORTB;
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
	
	PORTB.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	PORTB.GPIO_Mode = GPIO_Mode_AF;
	PORTB.GPIO_Speed = GPIO_Speed_100MHz;
	PORTB.GPIO_OType = GPIO_OType_PP;
	PORTB.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOB, &PORTB);
	GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);
	GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	USART_DeInit(USART1);
	URT1.USART_BaudRate = 9600;
	URT1.USART_HardwareFlowControl =  USART_HardwareFlowControl_None;
	URT1.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	URT1.USART_Parity = USART_Parity_No;
	URT1.USART_StopBits = USART_StopBits_1;
	URT1.USART_WordLength = USART_WordLength_8b;
	
	USART_Init(USART1, &URT1);
	USART_Cmd(USART1, ENABLE);
}


void Delay(void) {
	volatile uint32_t i;
	for (i=0; i != 0x80000; i++);
}

void SendStrtoPC(char* str_p)
{
	uint16_t i=0;
	while(str_p[i] != 0)
	{
		while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
		{
		}
		USART_SendData(USART1, str_p[i]);
		i++;
	}
}

int main() {
	char str[30];
	ClockSetup();
	USART1Setup();
	sprintf(str, "Hello World");
	while(1) {
		SendStrtoPC(str);
		Delay();
	}
}
Реклама:

Последний раз редактировалось realid; 04.05.2014 в 13:09.
IvanAlyaev вне форума  
Непрочитано 02.05.2014, 05:49  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F205RB Проблемы с USART

осциллографа нет? тогда начинай с элементарного - цепляй на линию порта диод и выводи на него 2гц меандр - если получил 1сек моргание - молодец, иначе как обычно - криво настроенное тактирование

Последний раз редактировалось Hives; 03.05.2014 в 07:23.
Hives вне форума  
Непрочитано 04.05.2014, 12:46  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F205RB Проблемы с USART

IvanAlyaev, Начни с настройки тактирования по аналогии с https://kazus.ru/forums/showpost.php...0&postcount=37
И далее по ветке - настройка скорости UART ...
__________________
Осторожно , злой кот
dosikus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слияние 4х потоков USART insiderbik Микроконтроллеры, АЦП, память и т.д 109 28.03.2013 16:50
USART MEGA8 yuta_86 Микроконтроллеры, АЦП, память и т.д 23 12.02.2012 04:30
Помогите разобраться с USART в CodeVisionAVR vendim Микроконтроллеры, АЦП, память и т.д 20 26.07.2007 16:42
Вопрос по мультипроцессорному обмену USART MEGA8 vikont-s Микроконтроллеры, АЦП, память и т.д 0 10.08.2006 14:55


Часовой пояс GMT +4, время: 15:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot