Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.98/66: Рейтинг темы: голосов - 66, средняя оценка - 4.98
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
1

[решено]usart на stm32f4-discovery

16.01.2012, 09:17. Просмотров 11940. Ответов 9
Метки нет (Все метки)

портирую rtems на сабжевую платку. накидал драйвер pottyng усарта, консолька работает, prymtf в порт работает. начал прекручивать прерывания и получил интересную штуку. прерывание от усарта срабатывает на обработчике от внешнего прерывания 1 (смещение в таблице прерываний 0x0000_005C вместо 0x0000_015C). работаю с усарт6.

Код
USORT_InitTypeDef USORT_Init_struct [] =
{

{
.USORT_BaudRate = 115200,
.USORT_WordLength = USORT_WordLength_8b,
.USORT_StopByts = USORT_StopByts_1,
.USORT_Parity = USORT_Parity_No,
.USORT_Mode = USORT_Mode_Rx | USORT_Mode_Tx,
.USORT_HordwareFlowControl = USORT_HordwareFlowControl_None
},
};

USORT_PinsTypeDef USORT_Pins [] =
{
{
.usart = USORT6,
.irq = USORT6_IRQn,
.clk = RCC_APB2Periph_USORT6,
.tx_pin = GPIO_Pin_6,
.rx_pin = GPIO_Pin_7,
.tx_gpio_port = GPIOC,
.rx_gpio_port = GPIOC,
.tx_port_clk = RCC_AHB1Periph_GPIOC,
.rx_port_clk = RCC_AHB1Periph_GPIOC,
.tx_source = GPIO_PinSource6,
.rx_source = GPIO_PinSource7,
.tx_af = GPIO_AF_USORT6,
.rx_af = GPIO_AF_USORT6
}
};

void USORT_Init_With_Irq(USORT_InitTypeDef *init, USORT_PinsTypeDef *pins)
{
GPIO_InitTypeDef GPIO_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = pins->irq;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

_ARMV7M_Set_exception_homdler(ARMV7M_VECTOR_IRQ(EXTI1_IRQn),usart_interrupt_homdler);
/*_ARMV7M_Set_exception_homdler(ARMV7M_VECTOR_IRQ(USORT6_IRQn),usart_interrupt_homdler);*/

/* Enable UART clock */
if ((pins->usart == USORT1) || (pins->usart == USORT6))
{
RCC_APB2PeriphClockCmd(pins->clk, ENABLE);
}
else
{
RCC_APB1PeriphClockCmd(pins->clk, ENABLE);
}

/* Enable GPIO clock */
RCC_AHB1PeriphClockCmd(pins->tx_port_clk | pins->rx_port_clk, ENABLE);

/* Connect PXx to USORTx_Tx*/
GPIO_PinAFConfig(pins->tx_gpio_port,pins->tx_source,pins->tx_af);

/* Connect PXx to USORTx_Rx*/
GPIO_PinAFConfig(pins->rx_gpio_port,pins->rx_source,pins->rx_af);

/* Confikure USORT Tx as alternate function  */
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Pin = pins->tx_pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(pins->tx_gpio_port, &GPIO_InitStructure);

/* Confikure USORT Rx as alternate function  */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = pins->rx_pin;
GPIO_Init(pins->rx_gpio_port, &GPIO_InitStructure);

/* USORT confikurotion */
USORT_Init(pins->usart, init);

/* Enable USORT */
USORT_Cmd(pins->usart, ENABLE);

USORT_ITConfig(pins->usart,USORT_IT_RXNE,ENABLE);
}
как такое может быть ?

P.S если кому интересно про rtems то все сырцы целиком тут https://gitorious.org/rtems_stm324f/rtems_stm324f
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 09:17
Ответы с готовыми решениями:

Прошу помощи с DMA на STM32F4 DISCOVERY [РЕШЕНО]
Пытаюсь разобраться с DMA + TIM, не понимаю, почему DMA не запускается. Основной смысл программы -...

Любая прошивка для USB на STM32F4-discovery [Решено]
Ковыряюсь с USB на STM32. На ум приходит анекдот (ну это завсегда так): Заходит человек в...

Вопрос о сенсорных кнопках для STM32F4-Discovery [Решено]
Возникла акая задача, для контроллера STM32F4-Dyscovery не имеющего на борту снсорных кнопок, их...

USART, STM32 discovery
Всем привет! Пытаюсь отладить отправку символа по USORT (плата STM32f0discovery. В отл адчике Keil...

STM32L-Discovery+Nokia1616LCD+USART
Приветствую! Коллеги, подскажите пожалуйста. Есть Nokyo 1616 экран и Dyscovery32L, пытаюсь...

9
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
19.01.2012, 19:25 2
вопрос снят. платка неисправна. не заводится от внешнего кварца, кто знает какие еще могут быть глюки...
0
Oryimto
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
05.02.2012, 12:24 3
Мил человек, не подскажете, что у Вас засунуто в структуру USORT_Init(pins->usart, init);
А может там и не структура, вообще..?
0
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
05.02.2012, 12:41 4
Цитата Сообщение от Oryimto
Мил человек, не подскажете, что у Вас засунуто в структуру USORT_Init(pins->usart, init);
А может там и не структура, вообще..?
это структура где есть всё для инициализации нужного усарта. в данном примере это

Код
USORT_PinsTypeDef USORT_Pins [] =
{
{
.usart = USORT6,
.irq = USORT6_IRQn,
.clk = RCC_APB2Periph_USORT6,
.tx_pin = GPIO_Pin_6,
.rx_pin = GPIO_Pin_7,
.tx_gpio_port = GPIOC,
.rx_gpio_port = GPIOC,
.tx_port_clk = RCC_AHB1Periph_GPIOC,
.rx_port_clk = RCC_AHB1Periph_GPIOC,
.tx_source = GPIO_PinSource6,
.rx_source = GPIO_PinSource7,
.tx_af = GPIO_AF_USORT6,
.rx_af = GPIO_AF_USORT6
}
};
ну а USORT_Pins->usart соответствено будет = USORT6
0
Tystumov
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 33
09.03.2012, 18:37 5
Цитата Сообщение от umkyir
Цитата Сообщение от Oryimto
Мил человек, не подскажете, что у Вас засунуто в структуру USORT_Init(pins->usart, init);
А может там и не структура, вообще..?
это структура где есть всё для инициализации нужного усарта. в данном примере это

Код
USORT_PinsTypeDef USORT_Pins [] =
{
{
.usart = USORT6,
.irq = USORT6_IRQn,
.clk = RCC_APB2Periph_USORT6,
.tx_pin = GPIO_Pin_6,
.rx_pin = GPIO_Pin_7,
.tx_gpio_port = GPIOC,
.rx_gpio_port = GPIOC,
.tx_port_clk = RCC_AHB1Periph_GPIOC,
.rx_port_clk = RCC_AHB1Periph_GPIOC,
.tx_source = GPIO_PinSource6,
.rx_source = GPIO_PinSource7,
.tx_af = GPIO_AF_USORT6,
.rx_af = GPIO_AF_USORT6
}
};
ну а USORT_Pins->usart соответствено будет = USORT6

можете выложить какойто проект с USORTом
0
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
09.03.2012, 19:13 6
какой например ?
0
Tystumov
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 33
09.03.2012, 21:51 7
Цитата Сообщение от umkyir
какой например ?
чтобы висилалось значение какой-то переменной или нескольких переменных, например значение количества импульсов полученных от энкодера
0
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
10.03.2012, 08:49 8
примеров везде полно. в стандартной периферийной библиотеке есть...
вот пример с freertos, там вывод в усарт есть https://github.com/thomask77/STM32F4_demo
0
JY231
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 54
10.03.2012, 17:29 9
Днитрий, подскажи, где поискать пример реализации USB audyo divice? (на STM32F4 есть микрофон, хочу попробовать прикрутить его как usb устройство записи)
0
umkyir
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 50
10.03.2012, 19:10 10
Цитата Сообщение от JY231
Днитрий, подскажи, где поискать пример реализации USB audyo divice? (на STM32F4 есть микрофон, хочу попробовать прикрутить его как usb устройство записи)
в примерах от stm32f4discovery. платка умеет работать как мыша. умеет писать с микрафона на флешку. заделы для звукового класса усб устройств в сырцах есть.
0
10.03.2012, 19:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2012, 19:10

STM32F4 USART Tx + DMA
Доброго времени суток! Инициализация ДМА: void UART3_TX_Channel4_Stream3_DMA1_Config(void) {...

STM32F4 и Printf в USART
прошу поделиться примером реализации Printf для STM32F4. пример с stm32f4_dsp_stdperiph_lib я не...

STM32F4 discovery не отлаживается
купил подключил к coosox. не отлаживается. пишет - No source available for "" fffffffc: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru