MyTetra Share
Делитесь знаниями!
main.c
Время создания: 24.11.2018 13:56
Раздел: Electronics - Microcontrollers - STM32 - Hunter - v3.1

/**

******************************************************************************

* File Name : main.c

* Description : Main program body

******************************************************************************

* This notice applies to any and all portions of this file

* that are not between comment pairs USER CODE BEGIN and

* USER CODE END. Other portions of this file, whether

* inserted by the user or by software development tools

* are owned by their respective copyright owners.

*

* Copyright (c) 2018 STMicroelectronics International N.V.

* All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted, provided that the following conditions are met:

*

* 1. Redistribution of source code must retain the above copyright notice,

* this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright notice,

* this list of conditions and the following disclaimer in the documentation

* and/or other materials provided with the distribution.

* 3. Neither the name of STMicroelectronics nor the names of other

* contributors to this software may be used to endorse or promote products

* derived from this software without specific written permission.

* 4. This software, including modifications and/or derivative works of this

* software, must execute solely and exclusively on microcontroller or

* microprocessor devices manufactured by or for STMicroelectronics.

* 5. Redistribution and use of this software other than as permitted under

* this license is void and will automatically terminate your rights under

* this license.

*

* THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"

* AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT

* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A

* PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY

* RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT

* SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,

* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,

* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,

* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*

******************************************************************************

*/


/* Includes ------------------------------------------------------------------*/

#include "main.h"

#include "stm32f4xx_hal.h"

#include "lwip.h"


/* USER CODE BEGIN Includes */

#include "net.h"


/* USER CODE END Includes */


/* Private variables ---------------------------------------------------------*/

UART_HandleTypeDef huart6;


/* USER CODE BEGIN PV */

/* Private variables ---------------------------------------------------------*/

extern uint8_t start;


extern struct netif gnetif;

//extern char cmdStr[30];

extern uint8_t uartByte;

extern USART_prop_ptr usartProp;

extern uint8_t clientHasConnection;

/* USER CODE END PV */


/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_USART6_UART_Init(void);


/* USER CODE BEGIN PFP */

/* Private function prototypes -----------------------------------------------*/


/* USER CODE END PFP */


/* USER CODE BEGIN 0 */


/* USER CODE END 0 */


int main(void)

{


/* USER CODE BEGIN 1 */


/* USER CODE END 1 */


/* MCU Configuration----------------------------------------------------------*/


/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();


/* USER CODE BEGIN Init */


/* USER CODE END Init */


/* Configure the system clock */

SystemClock_Config();


/* USER CODE BEGIN SysInit */


/* USER CODE END SysInit */


/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_LWIP_Init();

MX_USART6_UART_Init();


/* USER CODE BEGIN 2 */

//HAL_TIM_Base_Start_IT(&htim2);

initNet();

tcpServerInit();

//HAL_UART_Receive_IT(&huart6, (uint8_t*)cmdStr, 1);

HAL_UART_Receive_IT(&huart6, &uartByte, 1);

uint32_t exmplData;

// uint8_t ipAddrDest[4] = {10, 124, 4, 25};

// uint16_t portDest = 3333;

// uint32_t portAState = 0;

// tcpClientConnect(ipAddrDest, portDest);

/* USER CODE END 2 */


/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

{

/* USER CODE END WHILE */


/* USER CODE BEGIN 3 */

//for ICMP:

ethernetif_input(&gnetif); //get our packet

sys_check_timeouts(); //wait for timeout

++exmplData;

if(exmplData > 60000)

exmplData = 0;

if(clientHasConnection)

{

tcpClientSendInteger(exmplData);

}

// ++portAState;

// netClientSendInteger(portAState);

// netClientSendString("Hello. How are you?\r");

}

/* USER CODE END 3 */


}


/** System Clock Configuration

*/

void SystemClock_Config(void)

{


RCC_OscInitTypeDef RCC_OscInitStruct;

RCC_ClkInitTypeDef RCC_ClkInitStruct;


/**Configure the main internal regulator output voltage

*/

__HAL_RCC_PWR_CLK_ENABLE();


__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);


/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLM = 4;

RCC_OscInitStruct.PLL.PLLN = 50;

RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

RCC_OscInitStruct.PLL.PLLQ = 4;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}


/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;


if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}


/**Configure the Systick interrupt time

*/

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);


/**Configure the Systick

*/

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);


/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

}


/* USART6 init function */

static void MX_USART6_UART_Init(void)

{


huart6.Instance = USART6;

huart6.Init.BaudRate = 115200;

huart6.Init.WordLength = UART_WORDLENGTH_8B;

huart6.Init.StopBits = UART_STOPBITS_1;

huart6.Init.Parity = UART_PARITY_NONE;

huart6.Init.Mode = UART_MODE_TX_RX;

huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart6.Init.OverSampling = UART_OVERSAMPLING_16;

if (HAL_UART_Init(&huart6) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}


}


/** Configure pins as

* Analog

* Input

* Output

* EVENT_OUT

* EXTI

*/

static void MX_GPIO_Init(void)

{


/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOH_CLK_ENABLE();

__HAL_RCC_GPIOC_CLK_ENABLE();

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


}


/* USER CODE BEGIN 4 */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

if(huart == &huart6 && usartProp.isText == 0)

{

USART6_RxComplete();

}

}

/* USER CODE END 4 */


/**

* @brief This function is executed in case of error occurrence.

* @param None

* @retval None

*/

void _Error_Handler(char * file, int line)

{

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error return state */

while(1)

{

}

/* USER CODE END Error_Handler_Debug */

}


#ifdef USE_FULL_ASSERT


/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t* file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line number,

ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

/* USER CODE END 6 */


}


#endif


/**

* @}

*/


/**

* @}

*/


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/


Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования