FORBOT STM32 F1 STDPeriph Ex 5.1

Solution of exercise 5.1 from> https://forbot.pl/blog/kurs-stm32-5-komunikacja-z-komputerem-uart-id8439
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef gpio;
USART_InitTypeDef uart;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOC, ENABLE);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &gpio);
gpio.GPIO_Pin = GPIO_Pin_3;
gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &gpio);
USART_StructInit(&uart);
uart.USART_BaudRate = 115200;
USART_Init(USART2, &uart);
USART_Cmd(USART2, ENABLE);
while(1) {
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) {
char c = USART_ReceiveData(USART2);
switch(c) {
case 'A':
GPIO_SetBits(GPIOC, GPIO_Pin_0);
break;
case 'a':
GPIO_ResetBits(GPIOC, GPIO_Pin_0);
break;
case 'B':
GPIO_SetBits(GPIOC, GPIO_Pin_1);
break;
case 'b':
GPIO_ResetBits(GPIOC, GPIO_Pin_1);
break;
}
}
}
}