#define LCD0pin 15
#define LCD0port GPIOB
#define LCD1pin 6
#define LCD1port GPIOC
#define LCD2pin 7
#define LCD2port GPIOC
#define LCD3pin 8
#define LCD3port GPIOC
#define LCD4pin 9
#define LCD4port GPIOC
#define LCD5pin 8
#define LCD5port GPIOA
#define LCD6pin 9
#define LCD6port GPIOA
#define LCD7pin 10
#define LCD7port GPIOA
#define LCDEpin 14
#define LCDEport GPIOB
#define LCDReadWritepin 13
#define LCDReadWriteport GPIOB
#define LCDRegisterSelectpin 12
#define LCDRegisterSelectport GPIOB
void Setportforoutput(GPIO_Typedef *port, int pinNumber)
{
if(port == GPIOA)
RCC->ABHENR |= RCC_ABHENR_GPIOAEN;
if(port == GPIOB)
RCC->ABHENR |= RCC_ABHENR_GPIOBEN;
if(port == GPIOC)
RCC->ABHENR |= RCC_ABHENR_GPIOCEN;
if(port == GPIOD)
RCC->ABHENR |= RCC_ABHENR_GPIODEN;
if(port == GPIOF)
RCC->ABHENR |= RCC_ABHENR_GPIOFEN;
port->MODER |= (1<<(pinNumber*2));
port->MODER &= ~(1<<((pinNumber*2)+1));
port->OTYPER &= ~(1<<pinNumber);
port->OSPEEDR |= ((1<<(pinNumber*2))|(1<<((pinNumber*2)+1)));
port->OPUPDR &= ~((1<<(pinNumber*2))|(1<<((pinNumber*2)+1)));
}
void Initializeports()
{
Setportforoutput(LCD0port, LCD0pin);
Setportforoutput(LCD1port, LCD1pin);
Setportforoutput(LCD2port, LCD2pin);
Setportforoutput(LCD3port, LCD3pin);
Setportforoutput(LCD4port, LCD4pin);
Setportforoutput(LCD5port, LCD5pin);
Setportforoutput(LCD6port, LCD6pin);
Setportforoutput(LCD7port, LCD7pin);
}
void SendBitPortandpin(GPIO_Typedef * port, int pinNumber, uint8_t bitwise)
{
if(bitwise)
{
port->BSRR |= (1<<pinNumber):
}
else
{
port->BRR |= (1<<pinNumber):
}
}
void sendcharactertotheLCDpins(char Character)
{
SendBitPortandpin(LCD0port, LCD0pin, 0b00000001 & Character);
SendBitPortandpin(LCD1port, LCD1pin, 0b00000010 & Character);
SendBitPortandpin(LCD2port, LCD2pin, 0b00000100 & Character);
SendBitPortandpin(LCD3port, LCD3pin, 0b00001000 & Character);
SendBitPortandpin(LCD4port, LCD4pin, 0b00010000 & Character);
SendBitPortandpin(LCD5port, LCD5pin, 0b00100000 & Character);
SendBitPortandpin(LCD6port, LCD6pin, 0b01000000 & Character);
SendBitPortandpin(LCD7port, LCD7pin, 0b10000000 & Character);
}
int main(void)
{
Initializeports():
sendcharactertotheLCDpins('A'):
}