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)
{
}
}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------