Что важно понимать
Идеалогия разработки от STM такова :
В STM32 Cube MX делаем настройку всей периферии и подготавливаем готовый проект для разных сред разработки.
Далее пишем свой код между тегами :
/* USER CODE BEGIN 1 */
здесь ваш код
/* USER CODE END 1 */
Потом можно опять изменить настройку периферии через CubeMX заново сгенерировать все в тот же проект, но ваш код между тэгами сохранится.
Это очень своеобразный подход, но к этому надо просто привыкнуть. Это работает и я лично этим именно так и пользуюсь.
Далее немного подробнее
Сначала устанавливаем конфигуратор нашего микроконтроллера STM32CubeMX (www.st.com)
STM32CubeMX – конфигуратор для микроконтроллеров STMicroelectronics от фирмы создателя этих чипов.
Суть его в том , что под каждый ваш контроллер он подготавливает исходники (библиотеки), которые содержат большую часть рутинного кода. Надо только грамотно этим кодом воспользоваться.
Далее мы добавляем необходимый нам функционал (поддержка USB, таймеры , ...) , генерируем код (под конкретную среду разработки) и получаем для данной среды уже готовый проект с набором *.с,*.h файлов.
В первый раз после 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 прямо в этом поле вбиваем нужное значение:
Как переназначить ножки интерфейса UART или другого?
Если ножки назначаются нет тем выходам , на которые мы хотим вывести , например UART4_RX в STM32F205VG по умолчанию назначен будет на PA1.
То можно попытаться сначала найти UART4_RX на других выводах , у нас например есть на PC11.
Потом выбираем у ножек нужный нам функционал (например UART4_RX у PC11).
И только после этого устанавливаем UART4 из mode disable в Asynchronous !
Файлы для скачивания
*
простейший пример. Включен внешний кварц (RCC). И мигаем всетодиодом.
*
Добавляем поддержку USB. Видим в системе Unknown USB device.Добавляем поддержку USB. Видим в системе Unknown Device. VID_0000PID_0000