реклама на сайте
подробности

 
 
> USART1 на плате ST32VLDiscovery не работает, Не хочет работать невзирая ни на какие ухищрения
h0rr0rr_drag0n
сообщение Apr 29 2012, 18:57
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 29-10-09
Пользователь №: 53 281



Всем привет. Я пилю небольшую программку под STM32 на плате STM32VLDiscovery и мне понадобилось выводить отладочные данные на PC через USART1. Проблема в том, что USART1 не работает. Совсем(.

Я использую стандартную библиотеку периферии от ST для STM32. USART1 инициализирую следующим кодом:
Код
void debug_init() {
    GPIO_InitTypeDef GPIO_RxTx_InitStruct;
    USART_InitTypeDef USART_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    
    GPIO_RxTx_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_RxTx_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_RxTx_InitStruct.GPIO_Pin = GPIO_Pin_9; /* PA9 = TX */
    GPIO_Init(GPIOA, &GPIO_RxTx_InitStruct);

    GPIO_RxTx_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_RxTx_InitStruct.GPIO_Pin = GPIO_Pin_10; /* PA10 = RX */
    GPIO_Init(GPIOA, &GPIO_RxTx_InitStruct);

    USART_DeInit(USART1);
    USART_StructInit(&USART_InitStruct);
    USART_InitStruct.USART_BaudRate = 115200;
    USART_InitStruct.USART_WordLength = USART_WordLength_8b;
    USART_InitStruct.USART_StopBits = USART_StopBits_1;
    USART_InitStruct.USART_Parity = USART_Parity_No;
    USART_InitStruct.USART_Mode = USART_HardwareFlowControl_None;
    USART_InitStruct.USART_HardwareFlowControl = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStruct);

    USART_Cmd(USART1, ENABLE);
}


Передача данных (в моем случае я передаю один и тот же символ) производится следующим кодом:
Код
void debug_putchar(char ch) {
    while (!USART_GetFlagStatus(USART1, USART_FLAG_TC)) {}
    USART_SendData(USART1, (uint16_t) ch);
}


В функции main эти две функции используются так:
Код
debug_init();
    while (1) {
      debug_putchar('h');
    }

Вот и весь код...

C платы не выводится ни один символ. Смотрел напряжение на выводе TX — стрелка всегда на нуле. Контакт между выводами PA9, PA10 и выводами преобразователя UART<->COM есть — проверял.

Перелопатил выдачу гугла — у всех такой же код и у всех он работает. У меня же — почему-то тишина в последовательном канале.
Возможно, у меня к вечеру уже замылился глаз. Почему эта штука не работает и что делать?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016