Идеалогия разработки от STM

Что важно понимать

Идеалогия разработки от STM такова :

В STM32 Cube MX делаем настройку всей периферии и подготавливаем готовый проект для разных сред разработки.

Далее пишем свой код между тегами :

/* USER CODE BEGIN 1 */
            
            здесь ваш код

/* USER CODE END 1 */

Потом можно опять изменить настройку периферии через CubeMX заново сгенерировать все в тот же проект, но ваш код между тэгами сохранится.

Это очень своеобразный подход, но к этому надо просто привыкнуть. Это работает и я лично этим именно так и пользуюсь.

Далее немного подробнее

Сначала устанавливаем конфигуратор нашего микроконтроллера STM32CubeMX (www.st.com)

STM32CubeMX – конфигуратор для микроконтроллеров STMicroelectronics от фирмы создателя этих чипов.

Суть его в том , что под каждый ваш контроллер он подготавливает исходники (библиотеки), которые содержат большую часть рутинного кода. Надо только грамотно этим кодом воспользоваться.

Далее мы добавляем необходимый нам функционал (поддержка USB, таймеры , ...) , генерируем код (под конкретную среду разработки) и получаем для данной среды уже готовый проект с набором *.с,*.h файлов.

фотка 1

В первый раз после 6-7 часов тыканья по кнопкам приходит первый опыт:

  • сначала Peripherals:
  • выбираем USB (Device FS)
  • выбираем UART2 ( на всякий случай, может понадобиться)
  • на нашей плате отчетливо виден кварц 8MHz - выбираем RCC / High speed clock (HSE)= Crystal/Ceramic Resonator и вуаля - засветились RCC_OSC_IN(OUT) , 5 и 6 пины соответственно - как на схеме.
  • также виден часовой кварц 32KHz - выбираем RCC / Low speed clock (HSE)= Crystal/Ceramic Resonator и вуаля - засветились RCC_OSC32_IN(OUT) , 3 и 4 пины соответственно тоже см. как на схеме.
  • в MiddleWares \ USB_DEVICE \ Class For FS IP выбираем HID

HAL что это?

HAL это Hardware Abstract Layer - набор кода (в виде файлов) , который реализует низкий уровень программы (настройка , управления периферией и т.д.), чтобы избавить вас от рутины и облегчить переносимость кода на другие варианты контроллеров.

Многие ругают HAL и переписывают код самостоятельно. Меня лично пока HAL устраивает : UART, SPI ,USBD, USBH работает на HAL исходниках в принципе с небольшими корректировками нормально.

Но лучше к HAL относится как бесплатным примерам , на которорых удобно обучаться программированию периферии и т.д.

Как делать расчет clock-ов автоматически

Если надо установить заданную частоту HCLK прямо в этом поле вбиваем нужное значение:

фотка 2

Как переназначить ножки интерфейса UART или другого?

Если ножки назначаются нет тем выходам , на которые мы хотим вывести , например UART4_RX в STM32F205VG по умолчанию назначен будет на PA1.

То можно попытаться сначала найти UART4_RX на других выводах , у нас например есть на PC11.

Потом выбираем у ножек нужный нам функционал (например UART4_RX у PC11).

фотка 3

И только после этого устанавливаем UART4 из mode disable в Asynchronous !

Файлы для скачивания

* 1.STLink-RCC-PIN13 [zip]
простейший пример. Включен внешний кварц (RCC). И мигаем всетодиодом.

* 2.STLink-RCC-PIN13-USBHID [zip]
Добавляем поддержку USB. Видим в системе Unknown USB device.Добавляем поддержку USB. Видим в системе Unknown Device. VID_0000PID_0000

* 3.STLink-RCC-PIN13-USBHID_2 [zip]
3333