В области встраиваемых систем микроконтроллеры, как ключевые компоненты, играют важную роль в таких сценариях, как автоматическое управление, Интернет вещей и промышленные приложения. STM32F407, выпущенный компанией ST, представляет собой высокопроизводительный 32-разрядный микроконтроллер с низким энергопотреблением, который привлек внимание рынка благодаря своим превосходным функциям и простоте использования. В этой статье мы подробно рассмотрим особенности, технические характеристики, области применения и среду разработки STM32F407.
О STM32F407
Серия микросхем STM32F407 — это высокопроизводительные микроконтроллеры, выпущенные компанией STMicroelectronics на базе ядра ARM Cortex™-M4. В них используется 90-нанометровый процесс NVM и технология ART (Adaptive Real-Time Memory Accelerator™).
Особенности STM32F407
STM32F407 основан на ядре ARM Cortex-M4, имеет инструкции DSP и блок с плавающей запятой (FPU), а также тактовую частоту до 168 МГц. Вот его основные характеристики:
- Высокая производительность
Оснащен 32-разрядным ядром Cortex-M4, которое поддерживает операции с плавающей запятой и низкую задержку тактового цикла, что обеспечивает высокую скорость вычислений.
- Низкое энергопотребление
Технология динамической регулировки напряжения используется для переключения между различными режимами энергопотребления и снижения энергопотребления системы.
- Несколько конфигураций памяти
До 1 МБ флэш-памяти и 192 КБ ОЗУ для удовлетворения требований к объему памяти различных приложений.
- Мощная поддержка периферийных устройств
STM32F407 имеет богатый набор интерфейсов связи, таких как SPI, I2C, UART и т. д.; он поддерживает до 3 12-разрядных АЦП, 2 ЦАП и таймеры высокого разрешения.
- Безопасность и надежность
Встроенный аппаратный модуль CRC обеспечивает функцию обнаружения ошибок контрольной суммы в режиме реального времени; таймер Watchdog может контролировать состояние работы системы и предотвращать программные тупики.
Технические характеристики STM32F407
| Specification | Details |
|---|---|
| MCU Model | STM32F407ZGT6 |
| Flash Memory | 1MB |
| Clock Frequency | Up to 168MHz |
| ADC | Three 12-bit |
| DAC | Two 12-bit |
| DMA | Two DMA controllers |
| Timers | Up to 17 timers |
| GPIO | Up to 120 configurable GPIO pins |
| Interfaces | Built-in I2C, SPI, USART, I2S, CAN, and SDIO communication interfaces |
Применение STM32F407
Благодаря своей гибкости и простой масштабируемости, STM32F407 широко используется в различных интеллектуальных сценариях, включая, но не ограничиваясь:
- Устройства Интернета вещей (IoT)
Низкое энергопотребление STM32F407 делает его подходящим в качестве основного процессора для устройств IoT, таких как датчики и контроллеры.
- Промышленная автоматизация
В таких областях, как станки с ЧПУ и промышленные роботы, STM32F407 может отвечать за управление системой, сбор и обработку данных, а также связь с периферийными устройствами.
- Потребительская электроника
STM32F407 может использоваться в бытовой электронике, например в умных домах и носимых устройствах, для удовлетворения требований потребителей к производительности и энергопотреблению.
Ресурсы для разработки на базе STM32F407
Для облегчения работы разработчиков ST предоставляет богатый набор ресурсов для разработки и инструментальную поддержку, в том числе:
- платы для разработки серий Discovery и Nucleo
- Интегрированные среды разработки (IDE), такие как Keil uVision и IAR
- JLINK, CMSIS-DAP, ULINK или отладчик STLINK
- Комплект для разработки программного обеспечения STM32CubeF4 на основе библиотеки HAL/HLL
Эти ресурсы помогают упростить процесс разработки, сократить цикл разработки и позволяют разработчикам получать техническую поддержку, обмениваться опытом и изучать ресурсы.
Библиотека HAL
Библиотека HAL (Hardware Abstraction Layer) — это пакет драйверов периферийных устройств для STM32F407. Файл с кодом находится по пути:\Drivers\STM32F4xx_HAL_Driver.

CMSIS
CMSIS (Cortex Microcontroller Software Interface Standard) — это пакет драйверов, официально разработанный компанией ARM. Блок-схема выглядит следующим образом:

С помощью этого пакета программного обеспечения CMSIS компания ARM планирует унифицировать периферийные драйверы, цифровую обработку сигналов DSP, загрузчики и API различных основных RTOS от разных производителей микросхем.
STM32CubeMX — это графическое программное обеспечение для разработки, выпущенное компанией ST в 2014 году, чтобы облегчить пользователям настройку тактовых генераторов, периферийных устройств, выводов, RTOS и различного промежуточного программного обеспечения. Блок-схема выглядит следующим образом:

С помощью этого графического программного обеспечения вы можете легко генерировать инженерный код и поддерживать компиляторы, такие как MDK, IAR и TrueSTUDIO.
Проект платы разработчика STM32F407
В этом эксперименте по разработке мы используем библиотеку HAL для зажигания светодиода или создания светодиодной подсветки.
Шаг 1: Откройте STM32CubeMX, найдите вывод, соответствующий светодиоду, и настройте его как вывод GPIO.

Шаг 2: Выберите Serial Wire в SYS. Только если он выбран, последующие проекты могут быть нормально записаны с помощью st-link.

Шаг 3: Включите внешний тактовый генератор и настройте его на максимальную частоту 407 168 МГц.

Шаг 4: Сгенерируйте инженерный код.

Сгенерированный код показан ниже, а конфигурации выводов и тактовых генераторов настроены.
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct= {0}:
/*GPIO Ports Clock Enable */
_ _HAL_RCC_GPIOF_CLK_ENABLE():
_ _HAL_RCC GPIOH_CLK_ENABLE():
_ _HAL RCC GPIOA CLK_ENABLE():
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET):
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET):
/*Configure GPIO pins:PF9 PF10 */
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10:
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP:
GPIO_InitStruct.Pul1 =GPIO_NOPULL:
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW:
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct):
/*EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0):
HAL NVIC_EnableIRQ(EXTI2_IRQn):
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI3_IRQn):
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI4_IRQn):
}
Затем напишите программу для управления светодиодной лампой в while(1) основной функции.
while (1)
{
/* USER CODE END WHILE */
//Light up the LED
//HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10|GPIO_PIN_9, GPIO_PIN_RESET);
{
//LED flashes
HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10);
HAL_Delay(1000);
}
/* USER CODE BEGIN 3 */
}




