Микроконтроллер STM32F407: особенности, технические характеристики, проект разработки

В области встраиваемых систем микроконтроллеры, как ключевые компоненты, играют важную роль в таких сценариях, как автоматическое управление, Интернет вещей и промышленные приложения. 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

SpecificationDetails
MCU ModelSTM32F407ZGT6
Flash Memory1MB
Clock FrequencyUp to 168MHz
ADCThree 12-bit
DACTwo 12-bit
DMATwo DMA controllers
TimersUp to 17 timers
GPIOUp to 120 configurable GPIO pins
InterfacesBuilt-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.

An Example of STM32F4xx HAL Library
An Example of STM32F4xx HAL Library

CMSIS

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

Overview
Структура CMSIS (Изображение предоставлено Keil)

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

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

Open the STM32CubeMX

С помощью этого графического программного обеспечения вы можете легко генерировать инженерный код и поддерживать компиляторы, такие как MDK, IAR и TrueSTUDIO.

Проект платы разработчика STM32F407

В этом эксперименте по разработке мы используем библиотеку HAL для зажигания светодиода или создания светодиодной подсветки.

Шаг 1: Откройте STM32CubeMX, найдите вывод, соответствующий светодиоду, и настройте его как вывод GPIO.

Configure LED's pin as GPIO output in STM32CubeMX
Configure LED's pin as GPIO output in STM32CubeMX

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

Select Serial Wire Debug in SYS Mode and Configuration
Select Serial Wire Debug in SYS Mode and Configuration

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

Select High Speed Clock (HSE) in RCC Mode and Configuration
Select High Speed Clock (HSE) in RCC Mode and Configuration

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

Generate Code for STM32F407 Project in STM32CubeMX
Generate Code for STM32F407 Project in STM32CubeMX

Сгенерированный код показан ниже, а конфигурации выводов и тактовых генераторов настроены.

				
					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 */
}
				
			

Поделиться:

Прокрутить вверх

Instant Quote