#include <stdio.h>
#include <string.h>
#include "stm32l0xx_hal.h"
ADC_HandleTypeDef hadc;
DMA_HandleTypeDef hdma_adc;
TIM_HandleTypeDef htim2;
UART_HandleTypeDef huart2;
uint32_t adc_deger = 0;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_ADC_Init(void);
static void MX_TIM2_Init(void);
static void MX_USART2_UART_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC_Init();
MX_TIM2_Init();
MX_USART2_UART_Init();
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
HAL_ADC_Start_DMA(&hadc, &adc_deger, 1);
while (1) {
uint32_t pwm_val = (adc_deger * 1000) / 4095;
// Arkadasinin ekranindaki gibi raporlama
if (adc_deger >= 3000) printf("Sensor: %lu | Durum: KRITIK\r\n", adc_deger);
else if (adc_deger >= 1000) printf("Sensor: %lu | Durum: UYARI\r\n", adc_deger);
else printf("Sensor: %lu | Durum: NORMAL\r\n", adc_deger);
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, pwm_val);
HAL_Delay(250);
}
}
static void MX_ADC_Init(void) {
hadc.Instance = ADC1;
hadc.Init.Resolution = ADC_RESOLUTION_12B;
hadc.Init.ContinuousConvMode = ENABLE;
hadc.Init.DMAContinuousRequests = ENABLE;
HAL_ADC_Init(&hadc);
ADC_ChannelConfTypeDef sCh = {0};
sCh.Channel = ADC_CHANNEL_0;
sCh.Rank = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc, &sCh);
}
static void MX_TIM2_Init(void) {
htim2.Instance = TIM2;
htim2.Init.Prescaler = 31;
htim2.Init.Period = 1000;
HAL_TIM_PWM_Init(&htim2);
TIM_OC_InitTypeDef sOC = {0};
sOC.OCMode = TIM_OCMODE_PWM1;
sOC.Pulse = 0;
HAL_TIM_PWM_ConfigChannel(&htim2, &sOC, TIM_CHANNEL_2);
}
static void MX_USART2_UART_Init(void) {
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
HAL_UART_Init(&huart2);
}
int _write(int file, char *ptr, int len) {
HAL_UART_Transmit(&huart2, (uint8_t*)ptr, len, HAL_MAX_DELAY);
return len;
}
static void MX_DMA_Init(void) { __HAL_RCC_DMA1_CLK_ENABLE(); }
static void MX_GPIO_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); }
void SystemClock_Config(void) {}Loading
st-nucleo-l031k6
st-nucleo-l031k6