STM32 GPIO
Dr. Carlos Hernández
BalamSemiconductor
En este video mostramos progrmar el GPIO de la ST-Nlucle usando Keil a nivel de registros.
#include "stm32f4xx.h" // Device header
int main()
{
// Enable port A clock
RCC->AHB1ENR |= (0x1);
// Configure PA5 as output
GPIOA->MODER |= (0x1<<10); //GPIO_MODER_MODER5_0;
GPIOA->MODER &= ~(0x1<<11); //GPIO_MODER_MODER5_1;
// Push-pull mode
GPIOA->OTYPER &= ~(0x1<<5); //GPIO_OTYPER_OT_5;
// High speed
GPIOA->OSPEEDR &= ~(0x1<<10); //GPIO_OSPEEDER_OSPEEDR5_0;
GPIOA->OSPEEDR |= (0x1<<11); //GPIO_OSPEEDER_OSPEEDR5_1;
// Ensure pull-up and pull-down resistors are disabled
GPIOA->PUPDR &= ~(0x1<<10); //(GPIO_PUPDR_PUPDR5_0);
GPIOA->PUPDR &= ~(0x1<<11); //(GPIO_PUPDR_PUPDR5_1);
while(1)
{
GPIOA->BSRR |= (0x1<<5); //GPIO_BSRR_BS5;
GPIOA->BSRR |= (0x1<<21); //GPIO_BSRR_BR5;
}
}
int main()
{
// Enable port A clock
RCC->AHB1ENR |= (0x1);
// Configure PA5 as output
GPIOA->MODER |= (0x1<<10); //GPIO_MODER_MODER5_0;
GPIOA->MODER &= ~(0x1<<11); //GPIO_MODER_MODER5_1;
// Push-pull mode
GPIOA->OTYPER &= ~(0x1<<5); //GPIO_OTYPER_OT_5;
// High speed
GPIOA->OSPEEDR &= ~(0x1<<10); //GPIO_OSPEEDER_OSPEEDR5_0;
GPIOA->OSPEEDR |= (0x1<<11); //GPIO_OSPEEDER_OSPEEDR5_1;
// Ensure pull-up and pull-down resistors are disabled
GPIOA->PUPDR &= ~(0x1<<10); //(GPIO_PUPDR_PUPDR5_0);
GPIOA->PUPDR &= ~(0x1<<11); //(GPIO_PUPDR_PUPDR5_1);
while(1)
{
GPIOA->BSRR |= (0x1<<5); //GPIO_BSRR_BS5;
GPIOA->BSRR |= (0x1<<21); //GPIO_BSRR_BR5;
}
}
Descarga las diapositivas abajo:

gpio_1.pdf | |
File Size: | 691 kb |
File Type: |