Razy23 0 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба Доброго времени суток! Не так давно решил перейти с XMEGA на STM32 и встретил ряд проблем связаных с изучением нового микроконтроллера, а именно с проблемой приема данных по USART, причем передача работает нормально. Я предполагаю что проблема в инициализации самого порта, но все же как решить эту проблему я никак не пойму. Если кто знает помогите. Вот моя инициализация: USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; 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_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_7); GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_7); USART_StructInit(&USART_InitStructure); USART_InitStructure.USART_BaudRate = 4800; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); Среда EWARM. Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба ну а какой F1xx .... F4xx? По разному у них ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Razy23 0 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба STM32F303VC. Использую STM32F3-Discovery Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба Читаем Datasheet, User manual, AN ... с примерами иницилизации USART. Причем внимательно! ... не отвлекаясь на то как в XMEGA. И все получиться. И EWARM надеюсь соответствующей версии с поддержкой этого проца. И ... на ките это или на своей плате? И еще посмотрите с кем пересекается ваш USART3, и что на тех пинах еще сидит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Razy23 0 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба В Datasheet на STM32F3xx примеров нет... Если бы так я бы помощи не просил! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 19 ноября, 2013 Опубликовано 19 ноября, 2013 · Жалоба Нога RXD должна быть входом, TXD - выходом. А у Вас они сразу обе как выходы конфигурируются: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Razy23 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба Сделал TXD как вход: USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = 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_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_7); GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_7); USART_StructInit(&USART_InitStructure); USART_InitStructure.USART_BaudRate = 4800; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); но все же оно не работает. Подскажите как правильно инициализировать данный пин на вход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Razy23 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timma 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано? Покажите код связанный с прерыванием на приём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба Сделал TXD как вход... Это такая шутка или очепятка? ведь выше ясно сказали "Нога RXD должна быть входом, TXD - выходом." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба ... а может он еще Rx на Rx, а Tx на Tx соединяет? Попадались мне такие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndrejM 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба на 303-м и выше не нужно для AF переферии заботиться про вход/выход , просто AF и open-drain или push-pull mode. правильно у него в первом варианте было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smalcom 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); AFIO тоже включать надо Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано? наиболее вероятно - код поддержки. нужно смотреть код, которым выполняется приём и передача данных посредство USART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться