Microcontrolador STM32F407: Características, especificações, projeto de desenvolvimento

No campo dos sistemas embarcados, os microcontroladores, como componentes-chave, desempenham um papel importante em cenários como controle automático, Internet das Coisas e aplicações industriais. O STM32F407 lançado pela ST Company é um microcontrolador de 32 bits de alto desempenho e baixo consumo de energia que atraiu a atenção do mercado devido às suas excelentes funções e facilidade de uso. Neste artigo, vamos nos aprofundar nas características, especificações, áreas de aplicação e ambiente de desenvolvimento do STM32F407.

Sobre o STM32F407

A série de chips STM32F407 é um microcontrolador de alto desempenho lançado pela STMicroelectronics com base no núcleo ARM Cortex™-M4. Ele usa um processo NVM de 90 nanômetros e ART (Adaptive Real-Time Memory Accelerator™).

Recursos do STM32F407

O STM32F407 é baseado no núcleo ARM Cortex-M4, possui instruções DSP e uma unidade de ponto flutuante (FPU), e tem uma frequência de clock de até 168 MHz. Aqui estão suas principais características:

  • Alto desempenho

Equipado com um núcleo Cortex-M4 de 32 bits, que suporta operações de ponto flutuante e baixa latência de ciclo de clock, ele pode fornecer recursos de computação de alta velocidade.

  • Baixo consumo de energia

A tecnologia de ajuste dinâmico de tensão é usada para alternar entre diferentes modos de consumo de energia e reduzir o consumo de energia do sistema.

  • Várias configurações de armazenamento

Até 1 MB de Flash e 192 KB de RAM para atender aos requisitos de espaço de armazenamento de várias aplicações.

  • Suporte periférico poderoso

O STM32F407 possui interfaces de comunicação avançadas, como SPI, I2C, UART, etc.; suporta até 3 conversores ADC de 12 bits, 2 conversores DAC e temporizadores de alta resolução.

  • Segurança e confiabilidade

O módulo CRC de hardware integrado oferece a função de detecção de erros de soma de verificação em tempo real; o temporizador Watchdog pode monitorar o status de funcionamento do sistema e evitar o bloqueio do software.

Especificações do 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

Aplicação do STM32F407

Graças à sua flexibilidade e fácil escalabilidade, o STM32F407 é amplamente utilizado em vários cenários inteligentes, incluindo, mas não se limitando a:

  • Dispositivos da Internet das Coisas (IoT)

O baixo consumo de energia do STM32F407 o torna adequado como unidade central de processamento de dispositivos IoT, como sensores e controladores.

  • Automação industrial

Em campos como máquinas-ferramentas CNC e robôs industriais, o STM32F407 pode ser responsável pelo controle do sistema, aquisição e processamento de dados e comunicação com dispositivos periféricos.

  • Eletrônicos de consumo

O STM32F407 pode ser usado em áreas de eletrônicos de consumo, como casas inteligentes e dispositivos vestíveis, para atender às exigências dos consumidores em termos de desempenho e consumo de energia.

Recursos de desenvolvimento do STM32F407

Para facilitar o trabalho dos desenvolvedores, a ST fornece uma grande variedade de recursos de desenvolvimento e suporte a ferramentas, incluindo:

  • Placas de desenvolvimento das séries Discovery e Nucleo
  • Ambientes de desenvolvimento integrado (IDEs), como Keil uVision e IAR
  • Depurador JLINK, CMSIS-DAP, ULINK ou STLINK
  • Kit de desenvolvimento de software STM32CubeF4 baseado na biblioteca HAL/HLL

Esses recursos ajudam a simplificar o processo de desenvolvimento, encurtar o ciclo de desenvolvimento e permitir que os desenvolvedores obtenham suporte técnico, compartilhem experiências e aprendam recursos.

Biblioteca HAL

A biblioteca HAL, Hardware Abstraction Layer, é na verdade o pacote de drivers periféricos do STM32F407. O arquivo de código está localizado no caminho:\Drivers\STM32F4xx_HAL_Driver.

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

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) é um pacote de drivers oficialmente projetado pela ARM. O diagrama de blocos é o seguinte:

Overview
Estrutura CMSIS (Crédito da imagem: Keil)

Com este pacote de software CMSIS, espera-se que a ARM unifique os drivers periféricos, o processamento de sinal digital DSP, os downloaders e as APIs de vários RTOSs convencionais de vários fabricantes de chips.

O STM32CubeMX é um software de desenvolvimento gráfico lançado pela ST em 2014 para facilitar aos usuários a configuração de relógios, periféricos, pinos, RTOS e vários middlewares. O diagrama de blocos é o seguinte:

Open the STM32CubeMX

Através deste software gráfico, você pode facilmente gerar código de engenharia e suportar compiladores como MDK, IAR e TrueSTUDIO.

Projeto da placa de desenvolvimento STM32F407

Nesta experiência de desenvolvimento, usamos a biblioteca HAL para acender um LED ou fazer um LED piscar.

Passo 1: Abra o STM32CubeMX, encontre o pino correspondente ao LED e configure-o como saída GPIO.

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

Passo 2: Selecione Serial Wire em SYS. Somente se estiver selecionado, os projetos subsequentes poderão ser gravados normalmente usando o st-link.

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

Passo 3: Ligue o relógio externo e habilite-o para atingir a frequência máxima de 407 168 MHz.

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

Etapa 4: Gerar código de engenharia.

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

O código gerado é mostrado abaixo, e as configurações dos pinos e do relógio estão todas definidas.

				
					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):

}
				
			

Em seguida, escreva o programa para controlar a luz LED em while(1) da função principal.

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

Compartilhar em:

Rolar para cima

Instant Quote