Добавлены линии EXTI для приема ответа. Пока при приеме просто тоглится третьи пины:
Выставляются ключи на одних пинах -> принимается ответ на вторых пинах (Response) -> тоглится третьи пины (Signal)
This commit is contained in:
@@ -57,6 +57,34 @@ void Error_Handler(void);
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define PhaseAHiResponse_Pin GPIO_PIN_3
|
||||
#define PhaseAHiResponse_GPIO_Port GPIOA
|
||||
#define PhaseAHiResponse_EXTI_IRQn EXTI3_IRQn
|
||||
#define PhaseALoResponse_Pin GPIO_PIN_4
|
||||
#define PhaseALoResponse_GPIO_Port GPIOA
|
||||
#define PhaseALoResponse_EXTI_IRQn EXTI4_IRQn
|
||||
#define PhaseBHiResponse_Pin GPIO_PIN_5
|
||||
#define PhaseBHiResponse_GPIO_Port GPIOA
|
||||
#define PhaseBHiResponse_EXTI_IRQn EXTI9_5_IRQn
|
||||
#define PhaseBLoResponse_Pin GPIO_PIN_6
|
||||
#define PhaseBLoResponse_GPIO_Port GPIOA
|
||||
#define PhaseBLoResponse_EXTI_IRQn EXTI9_5_IRQn
|
||||
#define PhaseAHi_Pin GPIO_PIN_0
|
||||
#define PhaseAHi_GPIO_Port GPIOB
|
||||
#define PhaseALo_Pin GPIO_PIN_1
|
||||
#define PhaseALo_GPIO_Port GPIOB
|
||||
#define PhaseBHi_Pin GPIO_PIN_10
|
||||
#define PhaseBHi_GPIO_Port GPIOB
|
||||
#define PhaseBLo_Pin GPIO_PIN_11
|
||||
#define PhaseBLo_GPIO_Port GPIOB
|
||||
#define PhaseAHiSignal_Pin GPIO_PIN_12
|
||||
#define PhaseAHiSignal_GPIO_Port GPIOB
|
||||
#define PhaseALoSignal_Pin GPIO_PIN_13
|
||||
#define PhaseALoSignal_GPIO_Port GPIOB
|
||||
#define PhaseBHiSignal_Pin GPIO_PIN_14
|
||||
#define PhaseBHiSignal_GPIO_Port GPIOB
|
||||
#define PhaseBLoSignal_Pin GPIO_PIN_15
|
||||
#define PhaseBLoSignal_GPIO_Port GPIOB
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
|
||||
@@ -55,7 +55,10 @@ void SVC_Handler(void);
|
||||
void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void EXTI3_IRQHandler(void);
|
||||
void EXTI4_IRQHandler(void);
|
||||
void DMA1_Channel1_IRQHandler(void);
|
||||
void EXTI9_5_IRQHandler(void);
|
||||
void TIM2_IRQHandler(void);
|
||||
void TIM3_IRQHandler(void);
|
||||
void USART1_IRQHandler(void);
|
||||
|
||||
@@ -93,9 +93,9 @@ extern TIM_HandleTypeDef rs_htim;
|
||||
RS_HandleTypeDef hmodbus1;
|
||||
|
||||
/* DEFINE REGISTERS/COILS */
|
||||
MB_DeviceIdentificationTypeDef MB_INFO;
|
||||
MB_DataStructureTypeDef MB_DATA;
|
||||
RS_MsgTypeDef MODBUS_MSG;
|
||||
MB_DeviceIdentificationTypeDef MB_INFO;
|
||||
|
||||
uint32_t delay_scide = 1;
|
||||
uint32_t numb_scide = 10;
|
||||
|
||||
@@ -54,7 +54,8 @@ void MX_GPIO_Init(void)
|
||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(GPIOB, PhaseAHi_Pin|PhaseALo_Pin|PhaseBHi_Pin|PhaseBLo_Pin
|
||||
|PhaseAHiSignal_Pin|PhaseALoSignal_Pin|PhaseBHiSignal_Pin|PhaseBLoSignal_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin : PC13 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_13;
|
||||
@@ -69,13 +70,31 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PB0 PB1 PB10 PB11 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11;
|
||||
/*Configure GPIO pins : PAPin PAPin PAPin PAPin */
|
||||
GPIO_InitStruct.Pin = PhaseAHiResponse_Pin|PhaseALoResponse_Pin|PhaseBHiResponse_Pin|PhaseBLoResponse_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PBPin PBPin PBPin PBPin
|
||||
PBPin PBPin PBPin PBPin */
|
||||
GPIO_InitStruct.Pin = PhaseAHi_Pin|PhaseALo_Pin|PhaseBHi_Pin|PhaseBLo_Pin
|
||||
|PhaseAHiSignal_Pin|PhaseALoSignal_Pin|PhaseBHiSignal_Pin|PhaseBLoSignal_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* EXTI interrupt init*/
|
||||
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(EXTI3_IRQn);
|
||||
|
||||
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(EXTI4_IRQn);
|
||||
|
||||
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
@@ -203,6 +203,42 @@ void SysTick_Handler(void)
|
||||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line3 interrupt.
|
||||
*/
|
||||
void EXTI3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI3_IRQn 0 */
|
||||
__disable_irq();
|
||||
|
||||
HAL_GPIO_TogglePin(PhaseAHiSignal_GPIO_Port, PhaseAHiSignal_Pin);
|
||||
|
||||
__enable_irq();
|
||||
/* USER CODE END EXTI3_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(PhaseAHiResponse_Pin);
|
||||
/* USER CODE BEGIN EXTI3_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI3_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line4 interrupt.
|
||||
*/
|
||||
void EXTI4_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI4_IRQn 0 */
|
||||
__disable_irq();
|
||||
|
||||
HAL_GPIO_TogglePin(PhaseALoSignal_GPIO_Port, PhaseALoSignal_Pin);
|
||||
|
||||
__enable_irq();
|
||||
/* USER CODE END EXTI4_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(PhaseALoResponse_Pin);
|
||||
/* USER CODE BEGIN EXTI4_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI4_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 channel1 global interrupt.
|
||||
*/
|
||||
@@ -217,6 +253,28 @@ void DMA1_Channel1_IRQHandler(void)
|
||||
/* USER CODE END DMA1_Channel1_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[9:5] interrupts.
|
||||
*/
|
||||
void EXTI9_5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
|
||||
__disable_irq();
|
||||
|
||||
if (__HAL_GPIO_EXTI_GET_IT(PhaseBHiResponse_Pin) != 0x00u)
|
||||
HAL_GPIO_TogglePin(PhaseBHiSignal_GPIO_Port, PhaseBHiSignal_Pin);
|
||||
if (__HAL_GPIO_EXTI_GET_IT(PhaseBLoResponse_Pin) != 0x00u)
|
||||
HAL_GPIO_TogglePin(PhaseBLoSignal_GPIO_Port, PhaseBLoSignal_Pin);
|
||||
|
||||
__enable_irq();
|
||||
/* USER CODE END EXTI9_5_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(PhaseBHiResponse_Pin);
|
||||
HAL_GPIO_EXTI_IRQHandler(PhaseBLoResponse_Pin);
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles TIM2 global interrupt.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user