0% ont trouvé ce document utile (0 vote)
59 vues3 pages

Programmes ARCHI

Transféré par

aminemkdm19
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
59 vues3 pages

Programmes ARCHI

Transféré par

aminemkdm19
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

TD 1 - Exercice 1 : utilisation de ODR

#include "stm32f10x.h"

int main (void){

int i;

RCC->APB2ENR |= 28; //Activation de l'horloge des ports C et B et C

GPIOB->CRH &=0x00000000;
GPIOB->CRH |=0x00010000; //PORTB PIN 12 en OUTPUT //GPIOB -> CRH |= (1<<16);
GPIOB->ODR = 0;

while(1){

GPIOB->ODR |= 0x00001000; /*LED ON*/


for(i=0; i<80000; i++);
GPIOB->ODR ^= 0x00001000; /* LED OFF*/
for(i=0; i<80000; i++);

}}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

TD 1 - Exercice 1 : utilisation de BSRR

#include "stm32f10x.h"

int main (void){

int i;
RCC->APB2ENR=28;
GPIOB->CRH &= 0x00000000;
GPIOB->CRH |= 0x00010000;
GPIOB->BSRR = 0;

while(1){

GPIOB -> BSRR = 0x00001000;


for (i=0;i<500000;i++);
GPIOB -> BSRR = 0x10000000;
for (i=0;i<500000;i++);

}}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

TD 1 - Exercice 2 : Bouton poussoir (pull-up)

#include "stm32f10x.h"

int main (void) {


RCC -> APB2ENR |= 12; //Activation de l'horloge des ports A et B
GPIOA -> CRL = 0; //Mettre tous les pins du port A en input
GPIOA -> CRL |= (1<<19); //Input avec pullup/pulldown du pin4 du port A
GPIOA -> ODR |= (1<<4); //état HIGH au PA4 //on l'utilise lorsqu'on a une
résistance pull-up
GPIOB -> CRH = 0; //Mettre tous les pins du port B en input
GPIOB -> CRH |= (1<<16); //Mettre PB12 en output avec une fréquence de 10MHz
GPIOB -> ODR = 0; //Tous les pins du portB sont en LOW
while (1)
{
if (GPIOA -> IDR == 0)
{
GPIOB -> ODR |= (1<<12); //résistance pull-up
//GPIOB -> ODR &= ~(1<<12); //résistance push-up
}
else {
GPIOB -> ODR &= ~(1<<12); //résistance pull-up
//GPIOB -> ODR |= (1<<12); //résistance push-up
}
}
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

TD 1 - Exercice 2 : Bouton poussoir (push-up)

#include "stm32f10x.h"

int main (void) {


RCC -> APB2ENR |= 12; //Activation de l'horloge des ports A et B
GPIOA -> CRL = 0; //Mettre tous les pins du port A en input
GPIOA -> CRL |= (1<<19); //Input avec pullup/pulldown du pin4 du port A
//GPIOA -> ODR |= (1<<4); //état HIGH au PA4 //on l'utilise lorsqu'on a une
résistance pull-up
GPIOB -> CRH = 0; //Mettre tous les pins du port B en input
GPIOB -> CRH |= (1<<16); //Mettre PB12 en output avec une fréquence de 10MHz
GPIOB -> ODR = 0; //Tous les pins du portB sont en LOW
while (1)
{
if (GPIOA -> IDR == 16)
{
GPIOB -> ODR |= (1<<12); //résistance pull-up
//GPIOB -> ODR &= ~(1<<12); //résistance push-up
}
else {
GPIOB -> ODR &= ~(1<<12); //résistance pull-up
//GPIOB -> ODR |= (1<<12); //résistance push-up
}
}
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

TD 2 - Exercice 1 : Utilisation de MCO pour l'affichage


#include "stm32f10x.h"

int main (void) {


RCC -> APB2ENR = 5; //Activation de l'horloge des ports A et O
GPIOA -> CRH =0;
GPIOA -> CRH |= 9; //output push-pull du pin 8 du port A avec une fréquence
de 10Mhz
RCC -> CR = 0;
RCC -> CR |= 1; //Activation de l'oscillateur RC interne 8MHz
RCC -> CFGR = 0;
RCC -> CFGR |= 0x05000000; //HSI
//RCC -> CFGR |= 0x06000000; //HSE
//RCC -> CFGR |= 0x04000000 ; //SYSCLK
//RCC -> CFGR |= 0x07000000; // PLL/2
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

TD 2 - Exercice 2 : Utilisation de PLL

#include "stm32f10x.h"

int main(void)
{
RCC -> APB2ENR |= (1<<0);
RCC -> APB2ENR |= (1<<2);
RCC -> CR |= (1<<24);
RCC -> CFGR &=~(1<<16);
RCC -> CFGR |= (1<<1);
RCC -> CFGR |= (1<<26);
GPIOA -> CRH |= 0x000000B0; //Mettre la broche PA9 en output en générant un
signal alternatif open-drain
while (1)
{

}
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------

Vous aimerez peut-être aussi