
Muitos adquiriram uma "pílula azul" para tentar. Mas, devido à complexidade da programação, essa coisa estava em algum lugar na prateleira, até tempos melhores.
Vamos considerar que os “melhores tempos” chegaram.
O que é necessário para as experiências:
Hardware
Todas as peças / componentes usados podem ser comprados em aliexpress.com
- Claro, antes de tudo, o próprio controlador. "Blue Tablet"
- Adaptador USB-UART
- Cabo micro usb
- um conjunto de fios para conectar componentes entre si
Recomenda-se usar o programador
ST-Link V2 para mais rápido, em comparação com o UART, carregamento de "firmware" e depuração de programas
De software
O que é um módulo?
Um módulo é uma combinação de hardware e software. A parte do hardware é o "tablet" STM32F103C8T6, a parte do software é o "modelo de firmware" criado usando o programa
MIOC. Este programa é
OpenSource .
Portas do microcontrolador
O microcontrolador possui pinos ou pernas. Alguns deles são de potência do microcontrolador, outros têm uma finalidade especial (por exemplo, Redefinir), outros são uma interface de entrada / saída de uso geral (GPIO).
As portas estão agrupadas (A; B; C ...). Cada grupo contém até 16 portas, numeradas de 0 a 15. Como resultado, a numeração de portas se parece com PA0, PA1, ...
As portas são usadas para comunicação entre os componentes do módulo, por exemplo, um microprocessador e vários dispositivos periféricos. As portas podem atuar como uma entrada, uma saída e bidirecional.
A placa "tablet" está marcada com portas.
GPIO - Interface de E / S de uso geral
No módulo IO, os principais tipos de portas são apresentados na tabela:

Como sensores, atuadores, usaremos vários dispositivos do Arduino.
Programa MIOC (Configurador de entrada e saída de módulos)
Usando este programa, criamos / configuramos o modelo de firmware (projeto para Embitz; Keil) do módulo IO. O instalador não requer. Baixe, corra. Usando este programa, criamos variáveis globais que usaremos em nosso firmware. Variáveis podem ser associadas a portas.
Janela da primeira execução:

Crie um projeto:

Selecione uma pasta para o projeto. Pasta, para o projeto deve estar vazio!



O primeiro programa - "hello word" para o microcontrolador
Piscamos o LED que está na "pílula azul". Este LED está conectado à porta PC13.
Adicionar linha à tabela variável


Gerar código BSP (botão F8)

Além disso, toda vez que um projeto é alterado, é necessária a geração de BSP!
Abra o projeto criado no ambiente de desenvolvimento do EmBitz ou Keil. O EmBitz ainda é uma solução alternativa. Parece que o autor abandonou este projeto. Muito provavelmente no futuro, o projeto usará Code :: Blocks.
No arquivo main.c, escreva o seguinte:
(Para aumentar o tamanho da imagem, abra-a em uma nova guia)No EmBitz, pressione F2; depois que a janela de informações aparecer, pressione F7. A compilação deve ser feita.
Pressionar F2 novamente ocultará os marcadores de informações.

Faça o download no microcontrolador e veja como ele funciona.
Botão
Adicione um botão, por exemplo:

Diagrama de fiação:

Adicione uma variável à tabela:

Nós geramos BSP.
Mude o programa para o seguinte:

Criamos um novo BSP (F8), compilamos e carregamos no microcontrolador.
Pressionamos o botão - o LED acende, solta - ele apaga.
Em vez de um LED, um relé pode ser conectado a outra porta, por exemplo:

E gerencie algum tipo de carga útil.
Enviar mensagens para o console
Você precisa determinar qual será o console.
As opções são:
- Adaptador USB-UART
- porta COM virtual (cabo Micro-USB)
Se UART1 e USB como console forem selecionados na configuração ao mesmo tempo e o USB VCP não estiver selecionado, o console será atribuído a lugar nenhum. I.e. não haverá palavrões na função print_str (ou na macro de impressão), mas também não haverá saída. O mesmo comportamento ocorrerá se você não selecionar nenhuma interface ou selecionar USB VCP, mas não selecionar UART1 ou USB como console.
Configuração do console:

Conecte o TettaTerm à porta COM (console). Se fizermos o download do firmware via UART1, não esqueça de desconectar / conectar a porta COM. No TerraTerm, "botões de atalho" Alt + I; Alt + N Isso não é necessário para a opção de inicialização via ST-Link.
Edite o programa:

Agora o console exibirá o status do botão:

DS18B20
Conecte o sensor de temperatura DS18B20 ao "tablet".

Coloque a variável na tabela:

Mude o programa para o seguinte:

Criamos uma nova configuração, compilamos e carregamos no microcontrolador.
O console exibirá a temperatura medida pelo sensor.

ADC
Como um exemplo de trabalho com o ADC, você pode usar o potenciômetro:

Ou sensor de umidade do solo

Vamos nos debruçar sobre o último:
Configure a porta:

Editando o programa:

Nós compilamos, carregamos.
No console, observamos:

adc - leitura atual do ADC. max e min - leituras mínimas e máximas registradas dos sensores, completamente secas (0%) e muito úmidas (100%).
Muito úmido (100%) - coloque o sensor em um copo de água. Muito seco (0%) - fica ao ar livre.
De fato, calibramos o sensor de umidade do solo de 0 a 100%. Colocamos os valores máximo e mínimo no texto do programa.

O resultado do trabalho. O sensor é colocado no chão do vaso de flores:

Este projeto é um modelo de solução para regar plantas.
Por enquanto é tudo. O programa MIOC será reabastecido com recursos adicionais.