stm32f0 программирование UART

Я пытаюсь заставить usart работать с моим stm32f0-discovery, но теперь я обнаружил, что документации по этому поводу «не хватает», так что есть ли кто-нибудь, у кого есть пример любого usart, работающего для stm32f050?

Благодарю.

Барт Тьюниссен


person Bart Teunissen    schedule 05.02.2013    source источник
comment
У STM обычно есть неплохие образцы кода и сопровождающие их PDF-файлы.   -  person leppie    schedule 10.04.2013
comment
Да, это правда, но о комбинации stm32f0-discovery и usart мало что можно найти. В библиотеке периферии даже нет примера (вот где вы ожидаете, что он будет).   -  person Bart Teunissen    schedule 10.04.2013
comment
Обидно :( Но любой из этих примеров с f0-f4 должен работать (при наличии поддержки).   -  person leppie    schedule 10.04.2013
comment
Я пробовал это, но поскольку я начинал с stm32f0, а stm32f0 самый дешевый, простой и, следовательно, наиболее совместимый для нубов, у меня не получилось. Я смог найти только готовый пример на форуме st, да и тот пример не был безупречен. Поэтому я решил настроить написанное мной руководство, чтобы другие пользователи stm32f0 могли использовать его по своему усмотрению. Кстати, примеры и чипы stm32f0 и stm32f4 не совпадают ;)   -  person Bart Teunissen    schedule 10.04.2013
comment
Я имел в виду, что структура API такая же :) Получайте удовольствие от взлома. Я получил STM32F4 Discovery (ненамного дороже, чем F0 Discovery и очень быстрый :p) и несколько других устройств STM Cortex M3.   -  person leppie    schedule 10.04.2013


Ответы (1)


Хорошо, после двух дней поисков в интернете. Я нашел этот небольшой фрагмент кода, и мне удалось заставить его работать:

  USART_InitTypeDef USART_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

  GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_1);

  //Configure USART2 pins:  Rx and Tx ----------------------------
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_2 | GPIO_Pin_3;
  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);

  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(USART2, &USART_InitStructure);

  USART_Cmd(USART2,ENABLE);

  while(1)
  {
   while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);

   USART_SendData(USART2, 'X');
  }
}

* примечание: этот UART использует контакты PA2 и PA3 (RX и TX).

он отправляет X, когда буфер буфера отправки UART пуст. Более того, этот фрагмент кода использует только файл stm32f0xx.h. Таким образом, он лишен каких-либо ненужных частей.

надеюсь, что кто-то сможет использовать и это, потому что мне стоило больших усилий найти этот простой код. Может быть, когда-нибудь я напишу руководство по программированию UART с помощью stm32f0.

*Редактировать:

Я действительно написал учебник по usart. И его можно найти здесь:

Учебник usart stm32f0 Надеюсь, это поможет множеству людей.

person Bart Teunissen    schedule 07.02.2013