Let's Discover STM32 (Blinking Led, Delay, GPIO I/O)
Un point
remarquable est qu'un certain nombre de ces processeurs possèdent deux
convertisseurs analogique-numériques, permettant un échantillonnage simultanée
de deux grandeurs analogiques. Cadence sur un résonateur interne ou sur un
quartz externe haute fréquence 8 MHz (multiplie en interne au maximum a 72 MHz).
Le kit
STM32F4Discovery de STMicroelectronics est conçu pour évaluer les
caractéristiques des microcontrôleurs des séries STM32F407 et STM32F417. Les
microcontrôleurs STM32F407 et STM32F417 sont basés sur le cœur 32 bits ARM
Cortex-M4F hautes performances.
Les familles STM32F405, STM32F407, STM32F415,
STM32F417 de microcontrôleurs sont basées sur le noyau RISC 32 bits ARM
Cortex-M4 de qualité supérieure qui fonctionne à une fréquence de jusqu'à 168
MHz. Le noyau Cortex-M4 offre une unité de virgule flottante (FPU) à précision
simple qui prend en charge toutes les instructions de traitement de données et
types de données à précision simple ARM. Il exécute également toute une série
d'instructions DSP et une unité de protection de mémoire (MPU) qui améliore la
sécurité d'application.
·
Microcontrôleur STM32F407VGT6 avec noyau
Cortex-M4F 32 bits ARM, flash 1 Mo, 192 Ko de RAM dans un boîtier LQFP100
·
ST-LINK/V2 intégré avec choix de
commutation des modes pour utiliser le kit comme
·
ST-LINK/V2 autonome (avec connecteur SWD
pour la programmation et le débogage)
·
L'alimentation de la carte se fait par
bus USB ou via tension d'alimentation externe de 5 V
·
Alimentation d'application externe : 3
et 5 V
·
Accéléromètre LIS302DL ou LIS3DSH ST
MEMS
·
MP45DT02, capteur audio ST MEMS,
microphone numérique omnidirectionnel
·
CS43L22, DAC audio avec pilote de
haut-parleur de classe D intégré
·
Huit LED : LD1 (rouge/verte) pour la
communication USB, LD2 (rouge) pour la mise sous tension 3,3 V.
·
Quatre LED utilisateur, LD3 (orange),
LD4 (verte), LD5 (rouge) et LD6 (bleue), 2
·
LED OTG USB LD7 (vertes) VBus et LD8
(rouge), surintensité
·
Deux boutons-poussoirs (utilisateur et
Reset)
·
USB OTG FS avec micro-connecteur AB
·
Extension d'embase pour toutes les E/S
LQFP100 de connexion rapide pour la
· SDIO (entrée/sortie numérique sécurisée)
USART, SPI, I²C
I²S (son Inter-IC) + PLL audio
Timers 16 et 32 bits
ADC jusqu'à 3 x 12 bits
Basse tension 1,7 à 3,6 V
Voici des exemples de réalisation pratique équipées avec les codes sources et des vidéos démonstratifs
1- STM32 Tutoriel #1 (Control Leds Using externel Button)
CODE IS HERE :
/*Let's Electronic By Aymen Lachkhem */
#include "stm32f4xx_hal.h"
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
//HAL_Init();
/* GPIO Ports Clock Enable */
__GPIOD_CLK_ENABLE();
__GPIOA_CLK_ENABLE();
/* Configure PD10 as output pushpull mode */
GPIO_InitStructure.Pin = GPIO_PIN_10;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Configure PA1 in input mode*/
GPIO_InitStructure.Pin = GPIO_PIN_1;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
while(1)
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET)
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_RESET); }
}
|
Have Fun
2- STM32 Tutoriel #2 (Control DC Motor in Both Direction)
CODE IS HERE :
/*Let's Electronic By Aymen Lachkhem*/
#include "stm32f4xx_hal.h"
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
//HAL_Init();
/* GPIO Ports Clock Enable */
__GPIOD_CLK_ENABLE();
__GPIOA_CLK_ENABLE();
/* Configure PD11, PD10 in output pushpull mode to control DC Motor /
GPIO_InitStructure.Pin = GPIO_PIN_10 | GPIO_PIN_11 ;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Configure PA1 in input mode for DC motor's direction*/
GPIO_InitStructure.Pin = GPIO_PIN_1;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1)
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)){
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10,GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10,GPIO_PIN_SET);
}}
|
Have Fun
3 - STM32 Tutoriel #3 (Toggle Leds Using Mikro C for ARM)
CODE IS HERE :
// Let's Electronic By Aymen Lachkhem
unsigned int oldstate;
void main() {
GPIO_Digital_Input(&GPIOA_IDR, _GPIO_PINMASK_0); // Set PA0 as digital input
GPIO_Digital_Output(&GPIOD_ODR, _GPIO_PINMASK_ALL); // Set PORTD as digital output
oldstate = 0;
do {
if (Button(&GPIOA_IDR, 0, 1, 1)) // detect logical one on PA0 pin
oldstate = 1;
if (oldstate && Button(&GPIOA_IDR, 0, 1, 0)) { // detect one-to-zero transition on PA0 pin
GPIOD_ODR = ~GPIOD_ODR; // invert PORTD value
oldstate = 0;
}
} while(1); // endless loop
}
|
Have Fun
3
Aucun commentaire:
Enregistrer un commentaire