#include <stm32c0xx_hal.h>
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define LED_PORT GPIOA
#define LED_PIN GPIO_PIN_5
#define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
#define TFT_DC 2
#define TFT_CS 3
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
void SystemClock_Config(void);
void initGPIO()
{
GPIO_InitTypeDef GPIO_Config;
GPIO_Config.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Config.Pull = GPIO_NOPULL;
GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Config.Pin = LED_PIN;
LED_PORT_CLK_ENABLE();
HAL_GPIO_Init(LED_PORT, &GPIO_Config);
__HAL_RCC_GPIOA_CLK_ENABLE();
}
int main(void)
{
HAL_Init();
SystemClock_Config();
initGPIO();
int blinkingCount = 0;
while (1)
{
HAL_GPIO_TogglePin(LED_PORT, LED_PIN);
blinkingCount++;
if(blinkingCount <= 2)
delay(500);
else
delay((1000));
Serial.begin(115200);
Serial.println("Hello, WOKWI");
tft.begin();
tft.setCursor(20, 10);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(3);
tft.println("Hello STM2");
tft.setCursor(24, 10);
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(2);
tft.println("I can do SPI :-)");
};
return 0;
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV1;
}
void loop() { delay(10); }