Advertisement
Guest User

STM main

a guest
Jun 27th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.78 KB | None | 0 0
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.c
  5. * @brief : Main program body
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20.  
  21. /* Includes ------------------------------------------------------------------*/
  22. #include "main.h"
  23.  
  24. /* Private includes ----------------------------------------------------------*/
  25. /* USER CODE BEGIN Includes */
  26.  
  27. /* USER CODE END Includes */
  28.  
  29. /* Private typedef -----------------------------------------------------------*/
  30. /* USER CODE BEGIN PTD */
  31.  
  32. /* USER CODE END PTD */
  33.  
  34. /* Private define ------------------------------------------------------------*/
  35. /* USER CODE BEGIN PD */
  36.  
  37. /* USER CODE END PD */
  38.  
  39. /* Private macro -------------------------------------------------------------*/
  40. /* USER CODE BEGIN PM */
  41.  
  42. /* USER CODE END PM */
  43.  
  44. /* Private variables ---------------------------------------------------------*/
  45. I2C_HandleTypeDef hi2c1;
  46.  
  47. UART_HandleTypeDef huart1;
  48. UART_HandleTypeDef huart2;
  49.  
  50. uint8_t str1[] = "n1.val=42";
  51. uint8_t str12[] = "n1.val=0";
  52. uint8_t str2[] = "n0.val=0";
  53. uint8_t str21[] = "n0.val=1";
  54. uint8_t str3[] = "n2.val=0";
  55. uint8_t str31[] = "n2.val=1";
  56. uint8_t str4[] = "page page1";
  57. uint8_t str5[] = "page page0";
  58.  
  59. //fermer
  60. uint8_t str61[] = "j3.x=273";
  61. uint8_t str62[] = "j3.y=80";
  62. uint8_t str63[] = "j3.h=60";
  63. uint8_t str64[] = "j3.w=10";
  64.  
  65. //ouvrir
  66. uint8_t str71[] = "j3.x=247";
  67. uint8_t str72[] = "j3.y=105";
  68. uint8_t str73[] = "j3.h=10";
  69. uint8_t str74[] = "j3.w=60";
  70.  
  71.  
  72.  
  73.  
  74.  
  75. uint8_t recep;
  76. /* USER CODE BEGIN PV */
  77.  
  78. /* USER CODE END PV */
  79.  
  80. /* Private function prototypes -----------------------------------------------*/
  81. void SystemClock_Config(void);
  82. static void MX_GPIO_Init(void);
  83. static void MX_I2C1_Init(void);
  84. static void MX_USART1_UART_Init(void);
  85. static void MX_USART2_UART_Init(void);
  86. /* USER CODE BEGIN PFP */
  87.  
  88. /* USER CODE END PFP */
  89.  
  90. /* Private user code ---------------------------------------------------------*/
  91. /* USER CODE BEGIN 0 */
  92. void endTr(){
  93. uint8_t end =0xFF;
  94. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  95. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  96. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  97. }
  98.  
  99.  
  100.  
  101. void send(char *cmd)
  102. {
  103. uint8_t end = 0xFF;
  104. uint8_t str[40];
  105. sprintf(str, "%s", (uint8_t*)cmd);
  106. for (int i=0 ; i<strlen(str) ; i++)
  107. {
  108. HAL_UART_Transmit (&huart1, &str[i], 1, 10);// ex: str[i] = page 4 par exemple
  109.  
  110. }
  111. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  112. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  113. HAL_UART_Transmit (&huart1, &end, sizeof(end), 10);
  114. }
  115.  
  116. /* USER CODE END 0 */
  117.  
  118. /**
  119. * @brief The application entry point.
  120. * @retval int
  121. */
  122. int main(void)
  123. {
  124. /* USER CODE BEGIN 1 */
  125.  
  126. /* USER CODE END 1 */
  127.  
  128.  
  129. /* MCU Configuration--------------------------------------------------------*/
  130.  
  131. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  132. HAL_Init();
  133.  
  134. /* USER CODE BEGIN Init */
  135.  
  136. /* USER CODE END Init */
  137.  
  138. /* Configure the system clock */
  139. SystemClock_Config();
  140.  
  141. /* USER CODE BEGIN SysInit */
  142.  
  143. /* USER CODE END SysInit */
  144.  
  145. /* Initialize all configured peripherals */
  146. MX_GPIO_Init();
  147. MX_I2C1_Init();
  148. MX_USART1_UART_Init();
  149. MX_USART2_UART_Init();
  150. /* USER CODE BEGIN 2 */
  151.  
  152. /* USER CODE END 2 */
  153.  
  154. /* Infinite loop */
  155. /* USER CODE BEGIN WHILE */
  156. while (1)
  157. {
  158.  
  159. HAL_UART_Receive_IT(&huart1, &recep, sizeof(recep));
  160. if(recep == 2){ //pour ouvrir
  161.  
  162. HAL_GPIO_WritePin(GPIOA, LD2_Pin,1); // HAL_GPIO_WritePin(GPIOA, Ouvert_Pin, GPIO_PIN_SET);
  163. HAL_GPIO_WritePin(GPIOA, RELAI_Pin,0); // HAL_GPIO_WritePin(GPIOA, Ferme_Pin, GPIO_PIN_SET);
  164. HAL_UART_Transmit(&huart1, str71, sizeof(str71)-1, 10);
  165. endTr();
  166. HAL_UART_Transmit(&huart1, str72, sizeof(str72)-1, 10);
  167. endTr();
  168. HAL_UART_Transmit(&huart1, str73, sizeof(str73)-1, 10);
  169. endTr();
  170. HAL_UART_Transmit(&huart1, str74, sizeof(str74)-1, 10);
  171. endTr();
  172. }
  173. if(recep == 3){ //pour fermer
  174. HAL_GPIO_WritePin(GPIOA, RELAI_Pin,1);
  175. HAL_GPIO_WritePin(GPIOA, LD2_Pin,0);
  176. HAL_UART_Transmit(&huart1, str61, sizeof(str61)-1, 10);
  177. endTr();
  178. HAL_UART_Transmit(&huart1, str62, sizeof(str62)-1, 10);
  179. endTr();
  180. HAL_UART_Transmit(&huart1, str63, sizeof(str63)-1, 10);
  181. endTr();
  182. HAL_UART_Transmit(&huart1, str64, sizeof(str64)-1, 10);
  183. endTr();
  184. }
  185.  
  186. /* USER CODE END WHILE */
  187.  
  188. /* USER CODE BEGIN 3 */
  189. }
  190. /* USER CODE END 3 */
  191. }
  192.  
  193. /**
  194. * @brief System Clock Configuration
  195. * @retval None
  196. */
  197. void SystemClock_Config(void)
  198. {
  199. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  200. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  201.  
  202. /** Configure the main internal regulator output voltage
  203. */
  204. __HAL_RCC_PWR_CLK_ENABLE();
  205. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
  206. /** Initializes the CPU, AHB and APB busses clocks
  207. */
  208. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  209. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  210. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  211. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  212. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  213. RCC_OscInitStruct.PLL.PLLM = 16;
  214. RCC_OscInitStruct.PLL.PLLN = 336;
  215. RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
  216. RCC_OscInitStruct.PLL.PLLQ = 2;
  217. RCC_OscInitStruct.PLL.PLLR = 2;
  218. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  219. {
  220. Error_Handler();
  221. }
  222. /** Initializes the CPU, AHB and APB busses clocks
  223. */
  224. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  225. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  226. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  227. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  228. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  229. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  230.  
  231. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  232. {
  233. Error_Handler();
  234. }
  235. }
  236.  
  237. /**
  238. * @brief I2C1 Initialization Function
  239. * @param None
  240. * @retval None
  241. */
  242. static void MX_I2C1_Init(void)
  243. {
  244.  
  245. /* USER CODE BEGIN I2C1_Init 0 */
  246.  
  247. /* USER CODE END I2C1_Init 0 */
  248.  
  249. /* USER CODE BEGIN I2C1_Init 1 */
  250.  
  251. /* USER CODE END I2C1_Init 1 */
  252. hi2c1.Instance = I2C1;
  253. hi2c1.Init.ClockSpeed = 100000;
  254. hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
  255. hi2c1.Init.OwnAddress1 = 0;
  256. hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  257. hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  258. hi2c1.Init.OwnAddress2 = 0;
  259. hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  260. hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  261. if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  262. {
  263. Error_Handler();
  264. }
  265. /* USER CODE BEGIN I2C1_Init 2 */
  266.  
  267. /* USER CODE END I2C1_Init 2 */
  268.  
  269. }
  270.  
  271. /**
  272. * @brief USART1 Initialization Function
  273. * @param None
  274. * @retval None
  275. */
  276. static void MX_USART1_UART_Init(void)
  277. {
  278.  
  279. /* USER CODE BEGIN USART1_Init 0 */
  280.  
  281. /* USER CODE END USART1_Init 0 */
  282.  
  283. /* USER CODE BEGIN USART1_Init 1 */
  284.  
  285. /* USER CODE END USART1_Init 1 */
  286. huart1.Instance = USART1;
  287. huart1.Init.BaudRate = 9600;
  288. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  289. huart1.Init.StopBits = UART_STOPBITS_1;
  290. huart1.Init.Parity = UART_PARITY_NONE;
  291. huart1.Init.Mode = UART_MODE_TX_RX;
  292. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  293. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  294. if (HAL_UART_Init(&huart1) != HAL_OK)
  295. {
  296. Error_Handler();
  297. }
  298. /* USER CODE BEGIN USART1_Init 2 */
  299.  
  300. /* USER CODE END USART1_Init 2 */
  301.  
  302. }
  303.  
  304. /**
  305. * @brief USART2 Initialization Function
  306. * @param None
  307. * @retval None
  308. */
  309. static void MX_USART2_UART_Init(void)
  310. {
  311.  
  312. /* USER CODE BEGIN USART2_Init 0 */
  313.  
  314. /* USER CODE END USART2_Init 0 */
  315.  
  316. /* USER CODE BEGIN USART2_Init 1 */
  317.  
  318. /* USER CODE END USART2_Init 1 */
  319. huart2.Instance = USART2;
  320. huart2.Init.BaudRate = 115200;
  321. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  322. huart2.Init.StopBits = UART_STOPBITS_1;
  323. huart2.Init.Parity = UART_PARITY_NONE;
  324. huart2.Init.Mode = UART_MODE_TX_RX;
  325. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  326. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  327. if (HAL_UART_Init(&huart2) != HAL_OK)
  328. {
  329. Error_Handler();
  330. }
  331. /* USER CODE BEGIN USART2_Init 2 */
  332.  
  333. /* USER CODE END USART2_Init 2 */
  334.  
  335. }
  336.  
  337. /**
  338. * @brief GPIO Initialization Function
  339. * @param None
  340. * @retval None
  341. */
  342. static void MX_GPIO_Init(void)
  343. {
  344. GPIO_InitTypeDef GPIO_InitStruct = {0};
  345.  
  346. /* GPIO Ports Clock Enable */
  347. __HAL_RCC_GPIOC_CLK_ENABLE();
  348. __HAL_RCC_GPIOH_CLK_ENABLE();
  349. __HAL_RCC_GPIOA_CLK_ENABLE();
  350. __HAL_RCC_GPIOB_CLK_ENABLE();
  351.  
  352. /*Configure GPIO pin Output Level */
  353. HAL_GPIO_WritePin(GPIOA, LD2_Pin|RELAI_Pin, GPIO_PIN_RESET);
  354.  
  355. /*Configure GPIO pin : B1_Pin */
  356. GPIO_InitStruct.Pin = B1_Pin;
  357. GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  358. GPIO_InitStruct.Pull = GPIO_NOPULL;
  359. HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
  360.  
  361. /*Configure GPIO pins : LD2_Pin RELAI_Pin */
  362. GPIO_InitStruct.Pin = LD2_Pin|RELAI_Pin;
  363. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  364. GPIO_InitStruct.Pull = GPIO_NOPULL;
  365. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  366. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  367.  
  368. }
  369.  
  370. /* USER CODE BEGIN 4 */
  371.  
  372. /* USER CODE END 4 */
  373.  
  374. /**
  375. * @brief This function is executed in case of error occurrence.
  376. * @retval None
  377. */
  378. void Error_Handler(void)
  379. {
  380. /* USER CODE BEGIN Error_Handler_Debug */
  381. /* User can add his own implementation to report the HAL error return state */
  382.  
  383. /* USER CODE END Error_Handler_Debug */
  384. }
  385.  
  386. #ifdef USE_FULL_ASSERT
  387. /**
  388. * @brief Reports the name of the source file and the source line number
  389. * where the assert_param error has occurred.
  390. * @param file: pointer to the source file name
  391. * @param line: assert_param error line source number
  392. * @retval None
  393. */
  394. void assert_failed(uint8_t *file, uint32_t line)
  395. {
  396. /* USER CODE BEGIN 6 */
  397. /* User can add his own implementation to report the file name and line number,
  398. tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  399. /* USER CODE END 6 */
  400. }
  401. #endif /* USE_FULL_ASSERT */
  402.  
  403. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement