Skip to content

Instantly share code, notes, and snippets.

@robertlugg
Last active March 2, 2022 21:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robertlugg/a7c062210ab68214fd0c4f5c8bced0db to your computer and use it in GitHub Desktop.
Save robertlugg/a7c062210ab68214fd0c4f5c8bced0db to your computer and use it in GitHub Desktop.
STM32 LCD interfacing
/*
NOTE: This code had a bug which I edited in the browser to fix. UNTESTED.
Code to set up 8 pins for output to an LCD display.
This code sets up the 8 pins and turns on Port C, 6
#NEWBIEHACK
RL 03-01-2022
*/
// Set up GPIO Port B
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
// Set mode for GPIOB pins
GPIOB->MODER = 0;
GPIOB->MODER |=
0b01 << GPIO_MODER_MODER12_Pos
| 0b01 << GPIO_MODER_MODER13_Pos
| 0b01 << GPIO_MODER_MODER14_Pos
| 0b01 << GPIO_MODER_MODER15_Pos;
GPIOB->OTYPER = 0;
GPIOB->OSPEEDR = 0;
GPIOB->OSPEEDR |=
0b11 << GPIO_OSPEEDR_OSPEEDR12_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR13_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR14_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR15_Pos;
GPIOB->PUPDR = 0 ;
// Set u GPIO Port C
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
// Set mode for GPIO-C pins
GPIOC->MODER = 0;
GPIOC->MODER |=
0b01 << GPIO_MODER_MODER6_Pos
| 0b01 << GPIO_MODER_MODER7_Pos
| 0b01 << GPIO_MODER_MODER8_Pos
| 0b01 << GPIO_MODER_MODER9_Pos;
GPIOC->OTYPER = 0;
GPIOC->OSPEEDR = 0;
GPIOC->OSPEEDR |=
0b11 << GPIO_OSPEEDR_OSPEEDR6_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR7_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR8_Pos
| 0b11 << GPIO_OSPEEDR_OSPEEDR9_Pos;
GPIOC->PUPDR = 0 ;
// Turn on Port C, Pin 6
GPIOC->BSRR |= GPIO_BSRR_BS_6;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment