GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC - Parte 1

Eclipse + FreeRTOS

Até o momento a série GNU ARM Cross-toolchain vinha sendo praticada somente com o auxílio de um editor básico de texto e chamadas de ferramentas de compilação e depuração por meio da linha de comando num sistema operacional Linux. Esse tipo de atividade não é produtiva, pois a maior parte das atividades de uma equipe de desenvolvimento está na edição e depuração do código de um projeto. Visando um ganho de produtividade e facilitar a vida do desenvolvedor, foi criado um tutorial de como trabalhar com uma IDE open-source, no nosso caso o Eclipse, para a criação de projetos de sistemas embarcados bare-metal e baseados em RTOS.

 

 

A IDE escolhida: Eclipse

 

Por que precisamos de uma IDE (Integrated Development Environment)? Porque precisamos ser ágeis, e um ambiente de desenvolvimento desse tipo pode nos ajudar a atingir esse objetivo. Uma IDE oferece um conjunto de ferramentas de desenvolvimento utilizadas durante um projeto, desde um editor de texto e um depurador até ferramentas de gerenciamento do ciclo de vida de uma aplicação. Num sistema operacional Linux essas ferramentas são uma coleção de programas de linha de comando, independentes entre si. Usando uma interface gráfica, o ciclo modificação - compilação - implantação - depuração de uma aplicação é realizado usando o mesmo ambiente.

 

O projeto Eclipse foi criado pela IBM em novembro de 2001, suportado por uma comunidade formada por indivíduos e um consórcio de empresas de software. Nesse momento foi reaproveitada uma IDE que estava sendo desenvolvida na época pela IBM, chamada VisualAge. Em janeiro de 2004 foi criada a Fundação Eclipse, sem fins lucrativos, para ser a responsável pelo projeto.

 

O Eclipse é baseado no conceito de plataforma aberta para integração de ferramentas. E para oferecer escalabilidade, a plataforma Eclipse usa a arquitetura de plug-ins. Ao invés de ser uma IDE monolítica, o Eclipse oferece um framework no qual outras IDEs podem ser construídas, tendo como base a grande quantidade de plug-ins disponíveis e a possibilidade de novos serem criados. Atualmente a plataforma atingiu um ponto de maturidade muito interessante, sendo que algumas IDEs são fruto dessa iniciativa: Code Composer Studio, LPCXpresso IDE e Atollic TrueSTUDIO.

 

Muito bem! Vamos montar agora o ambiente de desenvolvimento para microcontroladores ARM Cortex-M em C/C++, usando o Eclipse e seus plug-ins. Um resumo do que será abordado na primeira parte deste artigo: 

  • Instalação da IDE Eclipse para C/C+;
  • Instalação da JRE (Java Runtime Environment);
  • Instalação do Cross-toolchain;
  • Instalação dos plug-ins;
  • Criação do workspace;
  • Instalação de plug-ins;
  • Criação de um novo Projeto C;
  • Configuração do build system;
  • Compilação do projeto.

 

A configuração do ambiente para depuração será apresentada na segunda parte deste artigo. Caso não tenham sido realizados os passos listados no primeiro artigo da série, é interessante que esses sejam executados de forma a tirar maior proveito dos conceitos apresentados a seguir.

 

 

Instalação do Eclipse IDE para C/C++

 

O primeiro passo é instalar o Eclipse para desenvolvimento em C/C++ na máquina host. Utilizaremos a última versão disponível dessa plataforma, o Eclipse Luna (4.4.0) SR1-RC1. Para isso realizamos os seguintes comandos:

 

$ cd ~/work/dl

 

Para um host Linux de 64 bits:

 

$ wget http://eclipse.c3sl.ufpr.br/technology/epp/downloads/release/luna/SR1-RC1/eclipse-dsl-luna-SR1-RC1-linux-gtk-x86_64.tar.gz

 

Para um host Linux de 32 bits:

 

$ wget http://eclipse.c3sl.ufpr.br/technology/epp/downloads/release/luna/SR1-RC1/eclipse-dsl-luna-SR1-RC1-linux-gtk.tar.gz

 

$ mkdir -p ~/work/tools
$ cd ~/work/tools

 

Para um host Linux de 64 bits:

 

$ tar xzvf ~/work/dl/eclipse-dsl-luna-SR1-RC1-linux-gtk-x86_64.tar.gz

 

Para um host Linux de 32 bits:

 

$ sudo tar xzvf ~/work/dl/eclipse-dsl-luna-SR1-RC1-linux-gtk.tar.gz

 

Será criada a pasta eclipse no diretório ~/work/tools. Para facilitar a nossa vida, vamos adicionar o caminho do executável eclipse no PATH do sistema. Edite o arquivo ~/.bashrc.

 

$ gedit ~/.bashrc

 

Altere o conteúdo da variável PATH nesse arquivo, como a seguir:

 

export PATH=~/work/tools/eclipse:$PATH

 

Aplique as modificações:

 

$ source ~/.bashrc

 

 

Instalação da JRE (Java Runtime Environment)

 

Como o Eclipse é desenvolvido em Java, é obrigatória a instalação da Máquina Virtual Java (JVM) no PC. Não é necessário instalar o pacote de desenvolvimento Java, JDK (Java Development Kit), e sim somente o pacote de runtime, JRE (Java Runtime Environment).

 

Execute o seguinte comando para a sua instalação: 

$ sudo apt-get install default-jre

 

 

Instalação do Cross-toolchain

 

Uma outra escolha que deve ser feita é a do cross-toolchain a ser utilizado. Neste artigo é utilizado o cross-toolchain GCC ARM Embedded, disponibilizado pela Linaro, que oferece ferramentas otimizadas para a arquitetura ARM. Execute os seguintes comandos para a sua instalação no host:

 

$ cd ~/work/dl
$ wget https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q2-update/+download/gcc-arm-none-eabi-4_8-2014q2-20140609-linux.tar.bz2
$ cd /opt/toolchains/eabi
$ sudo tar xjvf ~/work/dl/gcc-arm-none-eabi-4_8-2014q2-20140609-linux.tar.bz2

 

 

Criação do workspace

 

O Eclipse é baseado em workspaces, nos quais são criados projetos. Podemos criar diversos workspaces, cada um com um conjunto específico de projetos. Como não criamos algum ainda, temos que fazê-lo. Execute o seguinte comando para criar um workspace para os projetos que usam a placa STM32F4Discovery:

 

$ mkdir -p ~/work/workspaces/stm32f4discovery

 

Agora que todos pré-requisitos para o uso do Eclipse foram verificados, é hora de executá-lo:

 

$ eclipse &

 

Assim que a IDE é inicializada, é pedido o caminho do workspace a ser utilizado. Indique o caminho do diretório recém-criado.

 

 

Instalação de plug-ins

 

Uma vez que a IDE esteja instalada, é necessário adaptá-la para o nosso ambiente. Essa adaptação é realizada por meio de plug-ins. Mas o que faltaria então para ser possível desenvolver aplicações em C/C++ para microcontroladores ARM Cortex-M?

 

Estamos utilizando um cross-toolchain que não é suportado nativamente pelos plug-ins padrões do Eclipse. Atualmente é suportado o compilador GCC, tanto na sua versão Cross quanto na versão nativa, mas que seja utilizado para gerar binários que sejam executados em sistemas operacionais baseados em Linux. Ou seja, o plug-in que oferece suporte para desenvolvimento de aplicações Linux, tanto nativas quanto cross-compiladas, já está presente na IDE Eclipse CDT. Para o uso em sistemas bare-metal ou baseados em RTOS’s, como é o nosso caso, deve ser instalado um conjunto de plug-ins, GNU ARM Eclipse Plug-ins, atualmente mantido por Liviu Ionescu.

 

Além de procurar suporte para o cross-compilador utilizado, precisamos encontrar um plug-in que ofereça suporte para a depuração via hardware. Para isso vamos utilizar o plug-in C/C++ GDB Hardware Debugging, que faz parte do pacote CDT, e que possui dependência dos plug-ins anteriores.

 

Para a instalação desse conjunto de plug-ins, siga os seguintes passos:

 

1) Na barra de menus do Eclipse, clique no comando Help -> Install New Software…. Vai aparecer a seguinte tela:

 

eclipse-freertos-new-c-project

  

2) Clique no botão Add... para adicionar um novo repositório de plug-ins.

3) Na nova janela que é apresentada, insira os seguintes dados:

Name: CDT

Location: http://download.eclipse.org/tools/cdt/releases/8.4

Depois clique no botão OK.

 

eclipse-freertos-add-repository-cdt

  

4) A tela seguir é exibida, indicando os plug-ins disponíveis para download referente ao repositório indicado. Selecione a opção CDT Optional features -> C/C++ GDB Hardware Debugging, e clique no botão Next

 

eclipse-freertos-install-gdb-hardware-debugging 

5) Assim como no processo anterior, para que a instalação tenha efeito é necessário reiniciar o Eclipse. Na nova janela que aparece durante a instalação, clique no botão Yes para que isso aconteça.

 

eclipse-freertos-restart

 

Agora que temos o suporte para o depurador via hardware que vamos utilizar no projeto, precisamos que o suporte ao cross-compilador também seja obtido. Para isso um outro plug-in, GNU ARM Eclipse, é necessário. Siga os seguintes passos para a sua instalação:

 

1) Na barra de menus do Eclipse, clique no comando Help -> Install New Software…. Vai aparecer a seguinte tela:

  

eclipse-freertos-install-new-plugin 

2) Clique no botão Add... para adicionar um novo repositório de plug-ins.

3) Na nova janela que é apresentada, insira os seguintes dados:

 

Name: GNU ARM Eclipse

Location: http://gnuarmeclipse.sourceforge.net/updates

Depois clique no botão OK.

 eclipse-freertos-add-repository-gnu-arm-plugin

  

4) A tela seguir é exibida, indicando os plug-ins disponíveis para download referente ao repositório indicado. Selecione a única opção que aparece, GNU ARM C/C++ Cross Development Tools, e clique no botão Next.

 eclipse-freertos-install-gnu-arm-development

 

5) Durante a instalação, o você vai ser questionado se deseja continuar a instalar um software de conteúdo não assinado. Responda OK!

 eclipse-freertos-install-confirmation

 

 

6) Para que a instalação tenha efeito é necessário reiniciar o Eclipse. Na nova janela que aparece durante a instalação, clique no botão Yes para que isso aconteça.

 

eclipse-freertos-restart 

 

Criação de um novo Projeto C

 

Para a criação de um novo projeto em C, siga os seguintes passos:

 

1) Na barra de menus do Eclipse, clique no comando File -> New -> Project -> C/C++ -> C Project. Clique no botão Next. Na janela que é exibida em seguida, insira os seguintes dados:

 

Project Name: freertos_hello_world

Project Type: Executable -> Hello World ARM C Project

Toolchains: Cross ARM GCC

 

A janela preenchida deve ficar da seguinte forma:

 

eclipse-freertos-create-arm-c-project

 

Clique no botão Next.

 

2) Em seguida são pedidos alguns dados para a configuração do projeto. Use a seguinte configuração:

 

Author: Seu nome

Copyright notice: Teste do Embarcados (ou algo que desejarem!)

Hello world greeting: Hello ARM World! (também vai do gosto do cliente!)

Source folder: src

Linker semi-hosting options: --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lc -lm -lrdimon -Wl,--end-group (manter os dados padrões)

 

A janela preenchida deve ficar da seguinte forma:

 

eclipse-freertos-project-properties

 

Clique no botão Next.

 

3) Agora devem ser informadas quais configurações de deploy que desejamos para o projeto. Selecione Debug e Release e clique no botão Next.

 

eclipse-freertos-configurations

 

 

4) Na janela seguinte devem ser informados o nome do toolchain utilizado e o seu caminho. Use os seguintes dados:

 

Toolchain name: GNU Tools for ARM Embedded Processors (arm-none-eabi-gcc)

Toolchain path: /opt/toolchains/eabi/gcc-arm-none-eabi-4_8-2014q2/bin

 

eclipse-freertos-cross-toolchain-selection

 

 

Clique no botão Finish.

 

5) Agora o workspace que criamos tem um novo projeto, como mostra a figura abaixo:

 

eclipse-freertos-workspace

 

O Eclipse gera o novo projeto com a seguinte estrutura:

 

Projeto (freertos_hello_world)

- Includes

- src (nome dado durante a configuração)

 

Usaremos essas pastas da seguinte forma:

 

  • Includes: são apontados os diretórios de arquivos-cabeçalho do toolchain utilizado;
  • src: código e seu arquivos-cabeçalho, além de bibliotecas quando necessário.

 

Usaremos o projeto de exemplo do FreeRTOS apresentado num post anterior da série. É necessário realizar o download dos arquivos desse projeto aqui . Use a pasta ~/work/dl como pasta de destino do download. Os arquivos contidos nesse pacote são os mesmos do projeto apresentado no post mencionado anteriormente, porém não contém o arquivo Makefile e possui uma estrutura com pequenas modificações com relação à organização original.

 

Esse projeto-exemplo contém uma terceira pasta, projects. A sua função é armazenar os arquivos de configuração do projeto, tais como os arquivos de script do linker.

 

Assim que o download for finalizado, execute os seguintes comandos para descompactar o arquivo:

 

$ cd ~/work/dl
$ tar xjvf freertos_hello_world.tar.bz2 -C /tmp

 

Precisamos agora importar os arquivos que foram baixados no projeto criado. Para isso siga os seguintes passos:

 

1) Selecione o projeto no workspace clicando no seu nome. Feito isso, clique com o botão direito do mouse e selecione o comando Import…. Na janela que é exibida, selecione a fonte como sendo General -> File System, como mostrado abaixo:

 

eclipse-freertos-import-project

 

 

Clique no botão Next.

 

2) Na janela Import, insira o caminho /tmp/freertos_hello_world, local onde foi descompactado o arquivo baixado. Vai aparecer a estrutura de diretórios mostrada na figura abaixo. Selecione o diretório raiz, freertos_hello_world. Dessa forma os seu sub-diretórios são automaticamente selecionados. Mantenha o campo Into folder com o conteúdo freertos_hello_world.

 

eclipse-freertos-import-resources

 

Clique no botão Finish.

 

3) Os novos arquivos foram adicionados ao projeto, como mostrado na figura abaixo. Nessa mesma figura é exibido um arquivo que precisa ser removido, src/main.c, o qual foi criado automaticamente pela IDE. Clique com o botão direito do mouse nesse arquivo e selecione o comando Delete, e em seguida clique no botão OK da janela de confirmação.

 

eclipse-freertos-main-added-project

 

4) Foram adicionados ao projeto todos os arquivos da biblioteca STM32F4 DSP and standard peripherals e por isso precisa-se selecionar somente aqueles necessários para esse projeto. Da mesma forma é necessário selecionar somente uma implementação de gerenciamento de memória do FreeRTOS, a heap_2.c. Para isso selecione todos os arquivos, como mostrado nas imagens a seguir, que devem ser removidos do build system. Clique com o botão direito do mouse em um deles e selecione o comando Resource Configurations -> Exclude from Build…. Remova-os das duas configurações de projeto criadas: Debug e Release.

 

Arquivos necessários da biblioteca STM32F4 DSP and standard peripherals: 

  • misc.c;
  • stm32f4xx_exti.c;
  • stm32f4xx_gpio.c;
  • stm32f4xx_rcc.c;
  • stm32f4xx_syscfg.c.

 

eclipse-freertos-remove-drivers-project

 

eclipse-freertos-remove-drivers-project-std-peripherals

 

 

Para a compilação do projeto é necessário mais um passo, o da configuração do build system.

 

 

Configuração do build system

 

1) Clique com o botão direito do mouse no nome do projeto dentro do workspace e selecione a opção Properties. Na nova janela que é exibida, siga o caminho C/C++ Build -> Settings -> Tool Settings -> Target Processor. São listadas algumas opções para a configuração do target, ou seja, do microcontrolador utilizado no projeto. Altere os seguintes dados:

 

ARM family: cortex-m4

Float ABI: FP instructions (hard)

 

A nova configuração deve estar de acordo com a imagem a seguir:

 

eclipse-freertos-target-processor

 

2) Na configuração do preprocessor precisa-se adicionar duas definições de símbolos:

 

  • USE_STDPERIPH_DRIVER;
  • STM32F40_41xxx.

 

Para isso, selecione a configuração Cross ARM C Compiler -> Preprocessor e adicione cada um desses símbolos por meio do botão . Dessa forma, a nova configuração deve estar igual a da figura abaixo:

 

eclipse-freertos-preprocessor

 

3) O próximo passo é adicionar os caminhos de procura de arquivos-cabeçalho. Para isso, selecione a configuração Cross ARM C Compiler -> Includes e adicione cada diretório na área Include paths por meio do botão . Procure os diretórios por meio do botão Workspace… na nova janela que é exibida.

 

eclipse-freertos-preprocessor-add-dir-path

 

Ao selecionar o botão Workspace…, a seguinte janela é exibida:

 

eclipse-freertos-preprocessor-add-folders

 

Selecione os seguintes diretórios por meio dessa interface: 

  • project;
  • src;
  • src/Libraries/CMSIS/Include;
  • src/Libraries/STM32F4xx_StdPeriph_Driver/inc;
  • src/FreeRTOS/Source/include;
  • src/FreeRTOS/Source/portable/GCC/ARM_CM4F.

  

A nova configuração deve ficar da seguinte forma:

 

eclipse-freertos-preprocessor-includes

 

4) O passo seguinte é indicar o arquivo linker-script do projeto. Para isso, selecione a configuração Cross ARM C Linker -> General. Na área Script files são exibidos os arquivos de script atualmente selecionados para o projeto. Adicione um novo arquivo por meio do botão  e o procure por meio do botão Workspace… na nova janela que é exibida.

 

eclipse-freertos-add-linker-script

 

Selecione o arquivo stm32f4_flash.ld que está dentro do diretório project do projeto.

 

eclipse-freertos-linker-script-selection

 

Clique no botão OK. Na mesma janela de configuração do linker, Cross ARM C Linker -> General, selecione o check-box "Do not use standard start files (-nostartfiles)", pois o projeto já contém um arquivo de start-up próprio. A configuração final deve ficar igual a da figura abaixo:

 

eclipse-freertos-linker-config

 

5) Como o script-file faz uso da diretiva INCLUDE, precisa-se adicionar um caminho de procura de bibliotecas. Para isso, na configuração Cross ARM C Linker -> Libraries -> Library search path, adicione o caminho da pasta project do projeto, como mostrado a seguir:

 

eclipse-freertos-linker-path

 

 

Compilação do projeto

 

Pronto! Toda a configuração necessária para se compilar o projeto foi feita. Então...vamos lá! Clique no nome do projeto dentro do workspace com o botão direito do mouse e selecione o comando Build Project. A compilação vai ocorrer com sucesso e a saída de console da IDE é exibida a seguir:

 

eclipse-freertos-compilacao

 

Na continuação deste artigo será explicado como configurar o ambiente de depuração com GDB e OpenOCD, como foi utilizado nos artigos anteriores.

 

 

Agradecimentos

 

Esse artigo foi revisado por Carlos Márcio Freitas, que contribuiu com alterações no texto e correções. Muito obrigado Carlos!

 

Outros artigos da série

<< GNU ARM Cross-toolchain – FreeRTOS + GCC + STM32F4Discovery - Parte 2GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC - Parte 2 >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Henrique Rossi
Engenheiro eletricista com ênfase em eletrônica e pós-graduado em Engenharia de Software. Comecei um mestrado, mas o interrompi. Especialista na área de sistemas embarcados, com mais de 12 anos de experiência em desenvolvimento de firmware (sistemas baremetal e baseados em RTOS) e Linux Embarcado. Atualmente sou administrador do site Embarcados, trabalho num fabricante de Set-Top Box e atuo como consultor/desenvolvedor na área de sistemas embarcados.

20
Deixe um comentário

avatar
 
12 Comment threads
8 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Eduardo ScherrerHenrique RossiFabio_Souza_EmbarcadosRafael DiasUsando o OpenOCD + LPCXpresso + OOCDLink para debuggar (depurar) no Ubuntu x64 « Inteligência Natural Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Rafael Dias
Visitante
Rafael Dias

sumiram algumas imagens

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Rafael, vamos verificar o problema. Obrigado

Henrique Rossi
Visitante

Imagens recuperadas. Obrigado Rafael!

Rafael Dias
Visitante
Rafael Dias

Viu as novas funcionalidades do GNU ARM Eclipse?
A que mais me chamou a atenção é a possibilidade de uso do QEMU...

Henrique Rossi
Visitante

Ótima notícia! Não vai ter desculpa para não testar o firmware agora... 😀

trackback

[…] Parte 2: GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 […]

trackback

[…] GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 » 16-04-2014 […]

Rafael Dias
Visitante
Rafael Dias

opa!

usei o mesmo procedimento, só que acabei utilizando o compilador da CodeSourcery.

Com ele experimentei um erro no linker, relacionado a uma falta do arquivo rdimon.specs. Fiquei me debatendo por algumas horas e acabei desistindo.

Alterei para o compilador presente no post, da launchpad.net, e deu tudo certo.

Henrique Rossi
Visitante

Olá Rafael!

O arquivo de spec "rdimon.specs" usado pelo flag do linker "–specs=rdimon.specs" é específico para o cross-compiler da Linaro, e não é oferecido provavelmente pela ferramenta da CodeSourcery. Precisa alrerar alguns pontos da configuração do projeto, mas mínimos. Inclusive tem uma opção do tipo de toolchain específica para a CodeSourcery nas configurações do projeto.

Que bom que deu certo! 🙂

Abraços!

trackback

[…] GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 […]

trackback

[…] GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 […]

trackback

[…] GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 […]

trackback

[…] GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1 […]

Eduardo Scherrer
Visitante
Eduardo C. Scherrer

Boa noite Henrique, O eclipse apareceu um pouco diferente da versão apresentada neste post. Primeiro eu estava com o Ubuntu 12.04 32bits. Então achei que pele eclipse ser 32bits, possuisse uma interface diferente, então atualizei o meu Ubuntu para 14.04 e 64bits. Mesmo assim, o eclipse apareceu da mesma maneira. No momento que eu crio o projeto, no lugar de informar o autor do projeto, aparecem alguns locais de pastas, como CMSIS, DEVICE, configurações do processador. Até aí eu indiquei o que me pareceia conveniente. No momento que o projeto foi criado, algumas pastas apareceram, como "system". Eu deixei a… Leia mais »

Henrique Rossi
Visitante

Olá Eduardo!

Houve uma atualização do plug-in GNU ARM Eclipse no dia 12/04/2014 (http://gnuarmeclipse.livius.net/blog/2014/04/11/version-2-2-1-201404120702-released/) e a opção que utilizei foi substituída por "generic Cortex-M template". A princípio vou utilizar o tipo de projeto "Hello World ARM C Project", mas vou verificar com mais detalhes e atualizar o post com essa nova atualização. Muito obrigado Eduardo pelo teste!!

Abraços!

Henrique Rossi
Visitante

Olá Eduardo!

Atualizei o post e agora é levado em consideração a atualização do plug-in. Atualizei o tópico de criação do projeto. Se encontrar outro problema, pode entrar em contato, por favor.

Grande abraço e obrigado pela ajuda!

Eduardo Scherrer
Visitante
Eduardo C. Scherrer

Boa tarde Henrique,

Perfeito, funcionou como no post.
Obrigado por atualizar tão rápido.

Abraço

Henrique Rossi
Visitante

Olá Eduardo!

Eu que lhe agradeço! Testei o tipo de projeto "STM32F4xx C/C++ Project", que faz uso na nova biblioteca stm32fxx HAL, e funcionou muito bem! Vou estudar essa nova lib, que talvez substitua a lib anterior de periféricos da ST.

Abraços!