note: - модбас не моделируется, в s-function просто передаются константы режимов. - лишние файлы убраны в outdate. - два канала одной фазы переключаются немного криво: на один такт симуляции проскакивает высокий уровень предыдущего канала и только потом включается текущий канал
		
			
				
	
	
		
			106 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*********************************UART**************************************
 | 
						||
Данный файл содержит объявления базовых функции и дефайны для инициализации 
 | 
						||
UART.
 | 
						||
***************************************************************************/
 | 
						||
#ifndef __UART_GENERAL_H_
 | 
						||
#define __UART_GENERAL_H_
 | 
						||
 | 
						||
//////////////////////////////////////////////////////////////////////
 | 
						||
/////////////////////////---USER SETTINGS---/////////////////////////
 | 
						||
#define HAL_UART_MODULE_ENABLED 	// need to uncomment these defines in stm32f4xx_hal_conf.h
 | 
						||
#define HAL_USART_MODULE_ENABLED 	// also need to add hal_uart.c (source code)
 | 
						||
 | 
						||
//#define USE_USART1
 | 
						||
//#define USE_USART2
 | 
						||
//#define USE_USART3
 | 
						||
//#define USE_UART4
 | 
						||
//#define USE_UART5
 | 
						||
//#define USE_USART6
 | 
						||
/* note: used uart defines in modbus.h */
 | 
						||
 | 
						||
/////////////////////////---USER SETTINGS---/////////////////////////
 | 
						||
#include "periph_general.h"
 | 
						||
 | 
						||
 | 
						||
 | 
						||
/////////////////////////////////////////////////////////////////////
 | 
						||
////////////////////////////---DEFINES---////////////////////////////
 | 
						||
/**  
 | 
						||
	* @brief 	Analog for HAL define. Remade with pointer to structure.
 | 
						||
	* @note 	@ref __HAL_LINKDMA.
 | 
						||
	*/
 | 
						||
#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__)  	\
 | 
						||
do{                                                      								\
 | 
						||
(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); 										\
 | 
						||
(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
 | 
						||
 | 
						||
															
 | 
						||
////////////////////////////---DEFINES---////////////////////////////
 | 
						||
 | 
						||
 | 
						||
/////////////////////////////////////////////////////////////////////
 | 
						||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
 | 
						||
typedef struct // struct with settings for custom function
 | 
						||
{
 | 
						||
	UART_HandleTypeDef huart;
 | 
						||
	
 | 
						||
	GPIO_TypeDef *GPIOx;
 | 
						||
	uint16_t GPIO_PIN_RX;
 | 
						||
	uint16_t GPIO_PIN_TX;
 | 
						||
	
 | 
						||
	DMA_Stream_TypeDef *DMAChannel; // DMAChannel = 0 if doesnt need
 | 
						||
	uint32_t DMA_CHANNEL_X; // DMAChannel = 0 if doesnt need
 | 
						||
	
 | 
						||
	
 | 
						||
}UART_SettingsTypeDef;
 | 
						||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
 | 
						||
 | 
						||
 | 
						||
/////////////////////////////////////////////////////////////////////
 | 
						||
///////////////////////////---FUNCTIONS---///////////////////////////
 | 
						||
/**  
 | 
						||
	* @brief 	Initialize UART with UART_SettingsTypeDef structure.
 | 
						||
	* @param 	suart - указатель на структуру с настройками UART.
 | 
						||
  * @return HAL status.
 | 
						||
	* @note 	Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)
 | 
						||
	*/
 | 
						||
HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart);
 | 
						||
/**  
 | 
						||
	* @brief 	Initialize GPIO for UART.
 | 
						||
	* @param 	GPIOx 			- порт для настройки.
 | 
						||
	* @param 	GPIO_PIN_RX - пин для настройки на прием.
 | 
						||
	* @param 	GPIO_PIN_TX - пин для настройки на передачу.
 | 
						||
	*/
 | 
						||
void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);
 | 
						||
/**  
 | 
						||
	* @brief 	Initialize DMA for UART.
 | 
						||
	* @param 	huart 				- указатель на хендл UART для настройки DMA.
 | 
						||
	* @param 	hdma_rx 			- указатель на хендл DMA для линии приема UART.
 | 
						||
	* @param 	DMAChannel 		- указатель на канал DMA/поток DMA в STM32F407.
 | 
						||
	* @param 	DMA_CHANNEL_X - канал DMA.
 | 
						||
	*/
 | 
						||
void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
 | 
						||
/**  
 | 
						||
	* @brief 	Initialize UART & DMA clock and interrupt.
 | 
						||
	* @param 	huart - указатель на хендл UART для инициализации.
 | 
						||
	* @note 	Чтобы не генерировать функцию с иницилизацией неиспользуемых UART,
 | 
						||
						дефайнами определяются используемые UART.
 | 
						||
	*/
 | 
						||
void UART_MspInit(UART_HandleTypeDef *huart);
 | 
						||
/**  
 | 
						||
	* @brief 	Deinitialize UART & DMA clock and interrupt.
 | 
						||
	* @param 	huart - указатель на хендл UART для деинициализации.
 | 
						||
	* @note 	Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART,
 | 
						||
						дефайнами в rs_message.h определяются используемые UART.
 | 
						||
	*/
 | 
						||
void UART_MspDeInit(UART_HandleTypeDef *huart);
 | 
						||
 | 
						||
/**  
 | 
						||
	* @brief 	Check that uart init structure have correct values.
 | 
						||
	* @param 	suart - указатель на структуру с настройками UART.
 | 
						||
  * @return HAL status.
 | 
						||
	*/
 | 
						||
HAL_StatusTypeDef Check_UART_Init_Struct(UART_SettingsTypeDef *suart);
 | 
						||
///////////////////////////---FUNCTIONS---///////////////////////////
 | 
						||
 | 
						||
#endif // __UART_GENERAL_H_
 |