Como usar a placa STM32F103 na IDE da ST

Summary:

Nesse artigo será explicado, passo a passo, como utilizar a placa BluePill com o STM32F103 no ambiente STM32CubeIDE. Além de dicas importantes.

Nesse artigo será realizado uma breve introdução sobre a placa BluePill e como utilizá-la no ambiente STM32CubeIDE.

A placa BluePill possui um microcontrolador ARM de 32 bits com grande capacidade de atender diversas necessidades, além disso o preço é bastante atrativo. Pode ser adquirido desde sites chineses até fornecedores nacionais facilmente.

Além dos pinos padrão de I/O, ADC, PWM, possui 9 interfaces de comunicação serial e um RTC.

O RTC é um relógio interno que poderá ser utilizado na aplicação. É possível ajustá-lo e ele mantém a data e hora enquanto houver energia. Recomenda-se o uso de bateria a parte quando utilizado.

Dentro das interfaces de comunicação há duas bem interessantes, que são: USB e CAN. A USB é interessante para qualquer tipo de configuração utilizando o computador. Já a CAN é interessante para projetos que façam interface com um veículo.

Veja na figura abaixo os pinos de saída.

Instalando o ambiente de desenvolvimento STM32CubeIDE no Windows 10

Clique aqui para baixar a versão 1.11.2.

Para baixar a versão mais recente, acesse o site do fabricante, pelo endereço: st.com

Após baixado, siga a sequência de imagens abaixo para instalá-lo.

Se você chegou aqui, parabéns, tudo está instalado, veja o próximo tópico para inicializar um projeto e gravá-lo.

Criando um projeto

Clique no link do aplicativo e abra-o. No item 1, selecione o Workspace. Será a pasta onde os projetos serão armazenados. O item 2 será perguntando somente uma vez, o desenvolvedor pede para autorizar o envio de informações sobre o uso da plataforma. Fica a seu critério autorizar ou não. Para não autorizar, clique no botão No Thanks.

No primeiro uso, aparecerá as mensagens abaixo. No item 3 é para habilitar o uso da internet pelo ambiente, é recomendável selecionar e permitir o acesso, porque o ambiente baixa as bibliotecas dos microcontroladores conforme a necessidade. Dessa forma ocupa menos espaço e executa mais rápido. No item 4 ele questiona se deseja configurar os parâmetros de conexão, sugestão é clicar no botão No.

Para criar um novo projeto, clique no menu File->New->STM32 Project. Conforme imagem abaixo.

Nessa etapa, será necessário informar o Part Number do microcontrolador, no nosso caso é o STM32F103C6T6.

Informe o nome do projeto, clique no botão Finish, depois Finish novamente.

Aguarde o ambiente baixar todas as bibliotecas.

Após concluído, aparecerá o microcontrolador, conforme imagem abaixo.

Não utilizaremos nesse exemplo, porém recomendo sempre habilitar o modo de depuração, veja na imagem abaixo.

Habilite o pino PC13 como saída.

Para seguirmos boas práticas de desenvolvimento e código limpo, troque o nome do pino para sua função. O nome padrão é GPIO_Output, o novo nome será LED.

Habilite todos os pinos não utilizados para serem analógicos.

Compile sem nenhum código para testar o ambiente. Clique no menu Project->Build All. Ou tecle Ctrl+B (utilizo mais o atalho do teclado).

Onde inserir o código?

Por causa da ferramenta de configuração do ARM é necessário atentar-se de alguns detalhes, porque essa ferramenta gera código a partir das configurações selecionadas, facilitando bastante o trabalho.

Dentro do arquivo main.c será encontrado trechos conforme a imagem abaixo.

Esse trecho foi reservado para o desenvolvedor inserir os includes da aplicação. Haverá trechos para define, macro, variáveis, etc. Todo o código que estiver dentro do BEGIN e END será mantido, o que estiver fora será perdido sempre que utilizar a função para gerar código (Alt+K).

Código exemplo

O código a seguir é um pisca pisca para o LED PC13 que está disponível na placa do BluePill.

Para seguir padrão de código limpo, criarei defines com o nome da atividade. No arquivo main.c procure o trecho abaixo e insira o código.

/* Private define ---------------------------------*/
/* USER CODE BEGIN PD */
#define LIGAR_LED HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET)
#define DESLIGAR_LED HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET)
#define AGUARDAR_1S HAL_Delay(1000)
/* USER CODE END PD */

Encontre a função principal, esta no formato: int main(void)

Dentro do trecho de loop infinito insira o código.

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1){
    LIGAR_LED;
    AGUARDAR_1S;
    DESLIGAR_LED;
    AGUARDAR_1S;
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

Compile o código Ctrl + B

Na aba Build Analyzer é possível verificar o quando a aplicação está utilizando de memória flash e RAM.

Como gravar o firmware?

É necessário um gravador para enviar o firmware para o microcontrolador. Para isso pode ser utilizado o USB ST-LINK V2, conforme a imagem.

ATENÇÃO: Já observei que no mercado há modelos que os pinos de saída estão em outra posição. Então confirme com a documentação do que você adquiriu.

Caso o gravador tenha a posição dos pinos idêntica a imagem, então segue abaixo como conectá-lo a BluePill.

Expectativa de funcionamento. Caso tenha qualquer dificuldade, entre em contato, será um prazer ajudá-lo.

Configuração dos jumpers de boot

O jumpers (pinos BOOT0 e BOOT1) de boot permitem configurar o bootloader, ou seja, de que forma será gravado e utilizado o firmware.

Veja na tabela abaixo as possíveis configurações.

BOOT1BOOT0Descrição
X0Memoria flash do usuário
01Memoria do sistema
11Embedded SRAM

Na primeira opção, o firmware é gravado e lido a partir de memória flash do usuário. Na segunda refere-se a memória do sistema. E na terceira na SRAM, nesse caso, após reiniciá-lo a aplicação apagar.

Caso a configuração não esteja adequada, poderão ocorrer falhas, principalmente durante a depuração do código.

BONUS

Clique neste link para baixar o esquema elétrico da BluePill.

Share:FacebookX
Join the discussion

Menu

Recent Comments

No comments to show.