Advertisement
ddeexxiikk

LAB6

Jun 5th, 2025
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.30 KB | Source Code | 0 0
  1. /* USER CODE BEGIN Header */
  2. /**
  3.   ******************************************************************************
  4.   * @file           : main.c
  5.   * @brief          : Main program body
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * Copyright (c) 2025 STMicroelectronics.
  10.   * All rights reserved.
  11.   *
  12.   * This software is licensed under terms that can be found in the LICENSE file
  13.   * in the root directory of this software component.
  14.   * If no LICENSE file comes with this software, it is provided AS-IS.
  15.   *
  16.   ******************************************************************************
  17.   */
  18. /* USER CODE END Header */
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "main.h"
  21.  
  22. /* Private includes ----------------------------------------------------------*/
  23. /* USER CODE BEGIN Includes */
  24.  
  25. /* USER CODE END Includes */
  26.  
  27. /* Private typedef -----------------------------------------------------------*/
  28. /* USER CODE BEGIN PTD */
  29.  
  30. /* USER CODE END PTD */
  31.  
  32. /* Private define ------------------------------------------------------------*/
  33. /* USER CODE BEGIN PD */
  34. /* USER CODE END PD */
  35.  
  36. /* Private macro -------------------------------------------------------------*/
  37. /* USER CODE BEGIN PM */
  38.  
  39. /* USER CODE END PM */
  40.  
  41. /* Private variables ---------------------------------------------------------*/
  42. TIM_HandleTypeDef htim6;
  43.  
  44. UART_HandleTypeDef huart2;
  45. DMA_HandleTypeDef hdma_usart2_rx;
  46. DMA_HandleTypeDef hdma_usart2_tx;
  47.  
  48. /* USER CODE BEGIN PV */
  49. //Przyklad2
  50. //uint8_t Received[1];
  51.  
  52. //Przyklad3
  53. //uint8_t Received[10];
  54.  
  55. //Zadanie2 & 3
  56. uint8_t Received[1];
  57. uint8_t ciagZnakow[100];
  58.  
  59. /* USER CODE END PV */
  60.  
  61. /* Private function prototypes -----------------------------------------------*/
  62. void SystemClock_Config(void);
  63. static void MX_GPIO_Init(void);
  64. static void MX_DMA_Init(void);
  65. static void MX_TIM6_Init(void);
  66. static void MX_USART2_UART_Init(void);
  67. /* USER CODE BEGIN PFP */
  68.  
  69. /*
  70.  * Przyklad1
  71. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  72. {
  73.     static uint16_t cnt = 0;
  74.     uint8_t data[50];
  75.     uint16_t size = 0;
  76.     ++cnt;
  77.     size = sprintf(data, "Liczba wiadomosci: %d\n\r", cnt);
  78.     HAL_UART_Transmit_IT(&huart2, data, size);
  79.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);
  80. }*/
  81.  
  82. /*
  83.  * Przyklad2
  84. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  85. {
  86.     uint8_t Data[50];
  87.     uint16_t size = 0;
  88.  
  89.     switch(atoi(&Received))
  90.     {
  91.     case 0:
  92.         size = sprintf(Data, "STOP\n\r");
  93.         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);
  94.         break;
  95.     case 1:
  96.         size = sprintf(Data, "START\n\r");
  97.         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
  98.         break;
  99.     default:
  100.         size = sprintf(Data, "Odebrano nieprawidlwy znak: %c\n\r", Received);
  101.         break;
  102.     }
  103.  
  104.     HAL_UART_Transmit_IT(&huart2, Data, size);
  105.     HAL_UART_Receive_IT(&huart2, &Received, 1);
  106. }
  107. */
  108.  
  109. /*
  110.  * Przyklad3
  111. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  112. {
  113.     uint8_t Data[40];
  114.     uint16_t size = 0;
  115.     size = sprintf(Data, "Odebrana wiadomosc: %s\n\r", Received);
  116.     HAL_UART_Transmit_IT(&huart2, Data, size);
  117.     HAL_UART_Receive_IT(&huart2, &Received, 10);
  118.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);
  119. }
  120. */
  121.  
  122. /*
  123.  * Przyklad 4
  124. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  125. {
  126.     uint8_t Data[40];
  127.     uint16_t size = 0;
  128.     size = sprintf(Data, "Odebrana wiadomosc: %s\r\n", Received);
  129.     HAL_UART_Transmit_DMA(&huart2, Data, size);
  130.     HAL_UART_Receive_DMA(&huart2, Received, 10);
  131.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);
  132. }
  133. */
  134.  
  135. //Zadanie 3
  136. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  137. {
  138.     static int licznik = 0;
  139.  
  140.     ciagZnakow[licznik]=(*Received);
  141.     licznik++;
  142.  
  143.     if(licznik==100 || ciagZnakow[licznik-1]=='\n')
  144.     {
  145.         uint8_t Data[140];
  146.         uint16_t size=0;
  147.         size = sprintf(Data, "Odebrana wiadomosc: %s\n\r", ciagZnakow);
  148.         HAL_UART_Transmit_DMA(&huart2, Data, size);
  149.         licznik = 0;
  150.     }
  151.  
  152.     HAL_UART_Receive_DMA(&huart2, Received, 1);
  153. }
  154.  
  155. /* USER CODE END PFP */
  156.  
  157. /* Private user code ---------------------------------------------------------*/
  158. /* USER CODE BEGIN 0 */
  159.  
  160. /* USER CODE END 0 */
  161.  
  162. /**
  163.   * @brief  The application entry point.
  164.   * @retval int
  165.   */
  166. int main(void)
  167. {
  168.   /* USER CODE BEGIN 1 */
  169.  
  170.   /* USER CODE END 1 */
  171.  
  172.   /* MCU Configuration--------------------------------------------------------*/
  173.  
  174.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  175.   HAL_Init();
  176.  
  177.   /* USER CODE BEGIN Init */
  178.  
  179.   /* USER CODE END Init */
  180.  
  181.   /* Configure the system clock */
  182.   SystemClock_Config();
  183.  
  184.   /* USER CODE BEGIN SysInit */
  185.  
  186.   /* USER CODE END SysInit */
  187.  
  188.   /* Initialize all configured peripherals */
  189.   MX_GPIO_Init();
  190.   MX_DMA_Init();
  191.   MX_TIM6_Init();
  192.   MX_USART2_UART_Init();
  193.   /* USER CODE BEGIN 2 */
  194.  
  195.   //Przyklad1
  196.   //HAL_TIM_Base_Start_IT(&htim6);
  197.  
  198.   //Przyklad2
  199.   //HAL_UART_Receive_IT(&huart2, &Received, 1);
  200.  
  201.   //Przyklad3
  202.   //HAL_UART_Receive_IT(&huart2, &Received, 10);
  203.  
  204.   //Przyklad4
  205.   //HAL_UART_Receive_IT(&huart2, &Received, 10);
  206.  
  207.   //Zadanie3
  208.   HAL_UART_Receive_IT(&huart2, &Received, 1);
  209.  
  210.   /* USER CODE END 2 */
  211.  
  212.   /* Infinite loop */
  213.   /* USER CODE BEGIN WHILE */
  214.   int licznik=0;
  215.   while (1)
  216.   {
  217.     /* USER CODE END WHILE */
  218.  
  219.     /* USER CODE BEGIN 3 */
  220.  
  221.      /*Zadanie 2
  222.      HAL_UART_Receive(&huart2, Received, 1, HAL_MAX_DELAY);
  223.  
  224.      ciagZnakow[licznik]=(*Received);
  225.      licznik++;
  226.      if(licznik==100 || ciagZnakow[licznik-1]=='\n')
  227.      {
  228.          uint8_t Data[140];
  229.          uint16_t size=0;
  230.          size = sprintf(Data, "Odebrana wiadomosc: %s\n\r", ciagZnakow);
  231.          HAL_UART_Transmit(&huart2, Data, size, 100);
  232.      }*/
  233.   }
  234.   /* USER CODE END 3 */
  235. }
  236.  
  237. /**
  238.   * @brief System Clock Configuration
  239.   * @retval None
  240.   */
  241. void SystemClock_Config(void)
  242. {
  243.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  244.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  245.  
  246.   /** Initializes the RCC Oscillators according to the specified parameters
  247.   * in the RCC_OscInitTypeDef structure.
  248.   */
  249.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  250.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  251.   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  252.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  253.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  254.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL5;
  255.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  256.   {
  257.     Error_Handler();
  258.   }
  259.  
  260.   /** Initializes the CPU, AHB and APB buses clocks
  261.   */
  262.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  263.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  264.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  265.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2;
  266.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  267.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  268.  
  269.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  270.   {
  271.     Error_Handler();
  272.   }
  273. }
  274.  
  275. /**
  276.   * @brief TIM6 Initialization Function
  277.   * @param None
  278.   * @retval None
  279.   */
  280. static void MX_TIM6_Init(void)
  281. {
  282.  
  283.   /* USER CODE BEGIN TIM6_Init 0 */
  284.  
  285.   /* USER CODE END TIM6_Init 0 */
  286.  
  287.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  288.  
  289.   /* USER CODE BEGIN TIM6_Init 1 */
  290.  
  291.   /* USER CODE END TIM6_Init 1 */
  292.   htim6.Instance = TIM6;
  293.   htim6.Init.Prescaler = 799;
  294.   htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  295.   htim6.Init.Period = 8999;
  296.   htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  297.   if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  298.   {
  299.     Error_Handler();
  300.   }
  301.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  302.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  303.   if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  304.   {
  305.     Error_Handler();
  306.   }
  307.   /* USER CODE BEGIN TIM6_Init 2 */
  308.  
  309.   /* USER CODE END TIM6_Init 2 */
  310.  
  311. }
  312.  
  313. /**
  314.   * @brief USART2 Initialization Function
  315.   * @param None
  316.   * @retval None
  317.   */
  318. static void MX_USART2_UART_Init(void)
  319. {
  320.  
  321.   /* USER CODE BEGIN USART2_Init 0 */
  322.  
  323.   /* USER CODE END USART2_Init 0 */
  324.  
  325.   /* USER CODE BEGIN USART2_Init 1 */
  326.  
  327.   /* USER CODE END USART2_Init 1 */
  328.   huart2.Instance = USART2;
  329.   huart2.Init.BaudRate = 115200;
  330.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  331.   huart2.Init.StopBits = UART_STOPBITS_1;
  332.   huart2.Init.Parity = UART_PARITY_NONE;
  333.   huart2.Init.Mode = UART_MODE_TX_RX;
  334.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  335.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  336.   huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  337.   huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  338.   if (HAL_UART_Init(&huart2) != HAL_OK)
  339.   {
  340.     Error_Handler();
  341.   }
  342.   /* USER CODE BEGIN USART2_Init 2 */
  343.  
  344.   /* USER CODE END USART2_Init 2 */
  345.  
  346. }
  347.  
  348. /**
  349.   * Enable DMA controller clock
  350.   */
  351. static void MX_DMA_Init(void)
  352. {
  353.  
  354.   /* DMA controller clock enable */
  355.   __HAL_RCC_DMA1_CLK_ENABLE();
  356.  
  357.   /* DMA interrupt init */
  358.   /* DMA1_Channel6_IRQn interrupt configuration */
  359.   HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0);
  360.   HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
  361.   /* DMA1_Channel7_IRQn interrupt configuration */
  362.   HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0);
  363.   HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
  364.  
  365. }
  366.  
  367. /**
  368.   * @brief GPIO Initialization Function
  369.   * @param None
  370.   * @retval None
  371.   */
  372. static void MX_GPIO_Init(void)
  373. {
  374.  
  375.   /* GPIO Ports Clock Enable */
  376.   __HAL_RCC_GPIOF_CLK_ENABLE();
  377.   __HAL_RCC_GPIOA_CLK_ENABLE();
  378.  
  379. }
  380.  
  381. /* USER CODE BEGIN 4 */
  382.  
  383. /* USER CODE END 4 */
  384.  
  385. /**
  386.   * @brief  This function is executed in case of error occurrence.
  387.   * @retval None
  388.   */
  389. void Error_Handler(void)
  390. {
  391.   /* USER CODE BEGIN Error_Handler_Debug */
  392.   /* User can add his own implementation to report the HAL error return state */
  393.   __disable_irq();
  394.   while (1)
  395.   {
  396.   }
  397.   /* USER CODE END Error_Handler_Debug */
  398. }
  399.  
  400. #ifdef  USE_FULL_ASSERT
  401. /**
  402.   * @brief  Reports the name of the source file and the source line number
  403.   *         where the assert_param error has occurred.
  404.   * @param  file: pointer to the source file name
  405.   * @param  line: assert_param error line source number
  406.   * @retval None
  407.   */
  408. void assert_failed(uint8_t *file, uint32_t line)
  409. {
  410.   /* USER CODE BEGIN 6 */
  411.   /* User can add his own implementation to report the file name and line number,
  412.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  413.   /* USER CODE END 6 */
  414. }
  415. #endif /* USE_FULL_ASSERT */
  416.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement