EC11旋转编码器外部中断引脚

This commit is contained in:
王绪洁 2025-02-25 15:44:03 +08:00
parent 51d15c1977
commit d8d1a3bf69
9 changed files with 228 additions and 181 deletions

View File

@ -23,8 +23,7 @@
#define __MAIN_H
#ifdef __cplusplus
extern "C"
{
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
@ -106,6 +105,9 @@ extern "C"
#define LED3_G_GPIO_Port GPIOB
#define LED3_Y_Pin GPIO_PIN_7
#define LED3_Y_GPIO_Port GPIOE
#define EC11_KEY_Pin GPIO_PIN_8
#define EC11_KEY_GPIO_Port GPIOE
#define EC11_KEY_EXTI_IRQn EXTI9_5_IRQn
#define EC11_A_Pin GPIO_PIN_9
#define EC11_A_GPIO_Port GPIOE
#define EC11_B_Pin GPIO_PIN_11

View File

@ -61,6 +61,7 @@ void DMA1_Stream3_IRQHandler(void);
void DMA1_Stream4_IRQHandler(void);
void DMA1_Stream5_IRQHandler(void);
void DMA1_Stream6_IRQHandler(void);
void EXTI9_5_IRQHandler(void);
void TIM3_IRQHandler(void);
void TIM4_IRQHandler(void);
void USART1_IRQHandler(void);

View File

@ -270,7 +270,7 @@ void start_gpio_di_do_task(void const *argument)
uint8_t tx_data_len = 7 + DI_MAX;
uint8_t tx_data[32] = {0};
tx_data[0] = FRAME_HEAD; // 帧头
tx_data[1] = COM_OK; // 状态
tx_data[1] = COM_OK; // 状态
tx_data[2] = DEVICE_NUM; // 设备号
tx_data[3] = SEND_STATE_CMD; // 命令号
tx_data[4] = DI_MAX; // 数据长度

View File

@ -99,6 +99,12 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = EC11_KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(EC11_KEY_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PDPin PDPin PDPin PDPin */
GPIO_InitStruct.Pin = DO_CH4_Pin|DO_CH3_Pin|DO_CH1_Pin|DO_CH2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@ -166,6 +172,9 @@ void MX_GPIO_Init(void)
HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI3_IRQn);
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
}
/* USER CODE BEGIN 2 */

View File

@ -183,7 +183,8 @@ void SystemClock_Config(void)
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
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_DIV4;
@ -294,8 +295,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM4)
{
if (htim->Instance == TIM4) {
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */

View File

@ -311,6 +311,20 @@ void DMA1_Stream6_IRQHandler(void)
/* USER CODE END DMA1_Stream6_IRQn 1 */
}
/**
* @brief This function handles EXTI line[9:5] interrupts.
*/
void EXTI9_5_IRQHandler(void)
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(EC11_KEY_Pin);
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
/* USER CODE END EXTI9_5_IRQn 1 */
}
/**
* @brief This function handles TIM3 global interrupt.
*/

View File

@ -68,6 +68,7 @@ void MX_UART4_Init(void)
/* USER CODE BEGIN UART4_Init 2 */
//__HAL_UART_ENABLE_IT(&huart4, UART_IT_IDLE); // 使能IDLE中断
/* USER CODE END UART4_Init 2 */
}
/* UART5 init function */
void MX_UART5_Init(void)
@ -96,6 +97,7 @@ void MX_UART5_Init(void)
// __HAL_UART_ENABLE_IT(&huart5, UART_IT_RXNE); // 接收中断
// __HAL_UART_ENABLE_IT(&huart5, UART_IT_IDLE); // 空闲中断
/* USER CODE END UART5_Init 2 */
}
/* USART1 init function */
@ -124,6 +126,7 @@ void MX_USART1_UART_Init(void)
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
/* USART2 init function */
@ -153,6 +156,7 @@ void MX_USART2_UART_Init(void)
// __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); // 接收中断
// __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); // 使能IDLE中断
/* USER CODE END USART2_Init 2 */
}
/* USART3 init function */
@ -181,6 +185,7 @@ void MX_USART3_UART_Init(void)
/* USER CODE BEGIN USART3_Init 2 */
/* USER CODE END USART3_Init 2 */
}
/* USART6 init function */
@ -209,6 +214,7 @@ void MX_USART6_UART_Init(void)
/* USER CODE BEGIN USART6_Init 2 */
/* USER CODE END USART6_Init 2 */
}
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)

View File

@ -225,6 +225,11 @@
<WinNumber>1</WinNumber>
<ItemText>tcp_echo_flags_control</ItemText>
</Ww>
<Ww>
<count>15</count>
<WinNumber>1</WinNumber>
<ItemText>state</ItemText>
</Ww>
</WatchWindow1>
<Tracepoint>
<THDelay>0</THDelay>

View File

@ -193,65 +193,66 @@ Mcu.Pin10=PC5
Mcu.Pin11=PB1
Mcu.Pin12=PB2
Mcu.Pin13=PE7
Mcu.Pin14=PE9
Mcu.Pin15=PE11
Mcu.Pin16=PE12
Mcu.Pin17=PE13
Mcu.Pin18=PE14
Mcu.Pin19=PB11
Mcu.Pin14=PE8
Mcu.Pin15=PE9
Mcu.Pin16=PE11
Mcu.Pin17=PE12
Mcu.Pin18=PE13
Mcu.Pin19=PE14
Mcu.Pin2=PH0-OSC_IN
Mcu.Pin20=PB12
Mcu.Pin21=PB13
Mcu.Pin22=PD8
Mcu.Pin23=PD9
Mcu.Pin24=PD11
Mcu.Pin25=PD12
Mcu.Pin26=PD13
Mcu.Pin27=PD14
Mcu.Pin28=PD15
Mcu.Pin29=PC6
Mcu.Pin20=PB11
Mcu.Pin21=PB12
Mcu.Pin22=PB13
Mcu.Pin23=PD8
Mcu.Pin24=PD9
Mcu.Pin25=PD11
Mcu.Pin26=PD12
Mcu.Pin27=PD13
Mcu.Pin28=PD14
Mcu.Pin29=PD15
Mcu.Pin3=PH1-OSC_OUT
Mcu.Pin30=PC7
Mcu.Pin31=PC8
Mcu.Pin32=PC9
Mcu.Pin33=PA8
Mcu.Pin34=PA9
Mcu.Pin35=PA10
Mcu.Pin36=PA11
Mcu.Pin37=PA12
Mcu.Pin38=PA13
Mcu.Pin39=PA14
Mcu.Pin30=PC6
Mcu.Pin31=PC7
Mcu.Pin32=PC8
Mcu.Pin33=PC9
Mcu.Pin34=PA8
Mcu.Pin35=PA9
Mcu.Pin36=PA10
Mcu.Pin37=PA11
Mcu.Pin38=PA12
Mcu.Pin39=PA13
Mcu.Pin4=PC0
Mcu.Pin40=PA15
Mcu.Pin41=PC10
Mcu.Pin42=PC11
Mcu.Pin43=PC12
Mcu.Pin44=PD0
Mcu.Pin45=PD1
Mcu.Pin46=PD2
Mcu.Pin47=PD3
Mcu.Pin48=PD4
Mcu.Pin49=PD5
Mcu.Pin40=PA14
Mcu.Pin41=PA15
Mcu.Pin42=PC10
Mcu.Pin43=PC11
Mcu.Pin44=PC12
Mcu.Pin45=PD0
Mcu.Pin46=PD1
Mcu.Pin47=PD2
Mcu.Pin48=PD3
Mcu.Pin49=PD4
Mcu.Pin5=PC1
Mcu.Pin50=PD6
Mcu.Pin51=PD7
Mcu.Pin52=PB3
Mcu.Pin53=PB4
Mcu.Pin54=PB5
Mcu.Pin55=PB6
Mcu.Pin56=PB7
Mcu.Pin57=PE0
Mcu.Pin58=PE1
Mcu.Pin59=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin50=PD5
Mcu.Pin51=PD6
Mcu.Pin52=PD7
Mcu.Pin53=PB3
Mcu.Pin54=PB4
Mcu.Pin55=PB5
Mcu.Pin56=PB6
Mcu.Pin57=PB7
Mcu.Pin58=PE0
Mcu.Pin59=PE1
Mcu.Pin6=PA1
Mcu.Pin60=VP_LWIP_VS_Enabled
Mcu.Pin61=VP_SYS_VS_tim4
Mcu.Pin62=VP_TIM2_VS_ClockSourceINT
Mcu.Pin63=VP_TIM3_VS_ClockSourceINT
Mcu.Pin60=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin61=VP_LWIP_VS_Enabled
Mcu.Pin62=VP_SYS_VS_tim4
Mcu.Pin63=VP_TIM2_VS_ClockSourceINT
Mcu.Pin64=VP_TIM3_VS_ClockSourceINT
Mcu.Pin7=PA2
Mcu.Pin8=PA7
Mcu.Pin9=PC4
Mcu.PinsNb=64
Mcu.PinsNb=65
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VGTx
@ -274,6 +275,7 @@ NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:fals
NVIC.ETH_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.EXTI1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.EXTI3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.EXTI9_5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
@ -571,6 +573,12 @@ PE7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
PE7.Locked=true
PE7.PinState=GPIO_PIN_SET
PE7.Signal=GPIO_Output
PE8.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PE8.GPIO_Label=EC11_KEY
PE8.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PE8.GPIO_PuPd=GPIO_PULLUP
PE8.Locked=true
PE8.Signal=GPXTI8
PE9.GPIOParameters=GPIO_PuPd,GPIO_Label
PE9.GPIO_Label=EC11_A
PE9.GPIO_PuPd=GPIO_PULLUP
@ -647,6 +655,8 @@ SH.GPXTI1.0=GPIO_EXTI1
SH.GPXTI1.ConfNb=1
SH.GPXTI3.0=GPIO_EXTI3
SH.GPXTI3.ConfNb=1
SH.GPXTI8.0=GPIO_EXTI8
SH.GPXTI8.ConfNb=1
SH.S_TIM1_CH1.0=TIM1_CH1,Encoder_Interface
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_CH2.0=TIM1_CH2,Encoder_Interface