From 903076acfd914460446e5ef2bbd0ad98ba48f509 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 25 Feb 2025 20:45:49 +0800 Subject: [PATCH] park here... not good to decode --- Core/Inc/ev1527.h | 3 +- Core/Src/ev1527.c | 6 +-- Core/Src/gpio.c | 8 +-- Core/Src/main.c | 34 ++++++++----- Core/Src/stm32wlxx_hal_msp.c | 68 ++++++++++++++++++++++++++ Core/Src/stm32wlxx_it.c | 13 +++-- STM32CubeIDE/Release/WL55JC_AS923.elf | Bin 68468 -> 67912 bytes 7 files changed, 106 insertions(+), 26 deletions(-) diff --git a/Core/Inc/ev1527.h b/Core/Inc/ev1527.h index dc52a02..040ef57 100644 --- a/Core/Inc/ev1527.h +++ b/Core/Inc/ev1527.h @@ -48,6 +48,7 @@ void STS_RF_Send_Multi_Times(uint8_t *rf_payload, uint8_t rf_length, uint8_t mt) void STS_RF_Send_Button_Multi_Times(uint8_t *rf_payload, uint8_t one_button, uint8_t rf_length, uint8_t mt); void STS_RF_Send_AddressBit_and_CmdBit(uint8_t *rf_payload, uint8_t rf_length); - +void EV1527Reset(void); +void EV1527Decode(uint32_t v); #endif diff --git a/Core/Src/ev1527.c b/Core/Src/ev1527.c index 96cff61..68dd3ea 100644 --- a/Core/Src/ev1527.c +++ b/Core/Src/ev1527.c @@ -76,7 +76,7 @@ void EV1527_Init(void) // 配置上拉输入 GPIO_InitStruct.Pin = DATA_433_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - //GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(DATA_433_GPIO_PORT, &GPIO_InitStruct); } @@ -423,7 +423,7 @@ extern uint8_t rf_data[4]; #define BIT0_LOW_US 1100 #endif -#if 0 // RC_PROJECTOR +#if 1 // RC_PROJECTOR #define BIT1_HIGH_US 1000 // duty cycle = #define BIT1_LOW_US 500 // #define BIT0_HIGH_US 250 @@ -432,7 +432,7 @@ extern uint8_t rf_data[4]; #define ENDING_HIGH_US 200 #endif -#if 1 // SOS BUTTON +#if 0 // SOS BUTTON #define BIT1_HIGH_US 800 // duty cycle = #define BIT1_LOW_US 300 // #define BIT0_HIGH_US 300 diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index d3017c2..59c5973 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -123,10 +123,10 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(RF_Send_GPIO_Port, &GPIO_InitStruct); -#if 0 +#if 1 GPIO_InitStruct.Pin = RF_Receive_GPIO_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; - GPIO_InitStruct.Pull = GPIO_PULLDOWN; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; //GPIO_MODE_INPUT; //GPIO_MODE_IT_RISING_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(RF_Receive_GPIO_Port, &GPIO_InitStruct); #endif @@ -190,7 +190,7 @@ void MX_GPIO_Init(void) HAL_NVIC_EnableIRQ(EXTI4_IRQn); - HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); + HAL_NVIC_SetPriority(EXTI9_5_IRQn, 2, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0); diff --git a/Core/Src/main.c b/Core/Src/main.c index ce1b638..b9c6679 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -58,9 +58,9 @@ uint32_t uwFrequency = 0; #endif #if 1 - uint32_t capture_Buf[3]={0}; // counter - uint8_t capture_Cnt=0; // state - uint32_t high_time, low_time; // high level duration, low level duration + volatile uint32_t capture_Buf[3]={0}; // counter + volatile uint8_t capture_Cnt=0; // state + volatile uint32_t high_time, low_time; // high level duration, low level duration #endif //uint8_t rf_payload[3]={0xF8,0xCD,0x07}, rf_length=3; @@ -165,14 +165,14 @@ int main(void) MX_USART2_UART_Init(); - MX_USART1_UART_Init(); + // MX_USART1_UART_Init(); MX_TIM1_Init(); printf("start \r\n"); - EV1527_Init(); - + // EV1527_Init(); + EV1527Reset(); #if 0 /*## Start the Input Capture in interrupt mode ##########################*/ if (HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_2) != HAL_OK) @@ -216,6 +216,8 @@ int main(void) Error_Handler(); } #endif + +#if 1 /*## Start the Input Capture in interrupt mode ##########################*/ if (HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_1) != HAL_OK) { @@ -223,25 +225,30 @@ int main(void) Error_Handler(); } - +#endif while(1) { -#if 1 + +#if 0 switch(capture_Cnt) { case 0: capture_Cnt ++; - printf("cc: %ld ", capture_Cnt); - TIM_SET_CAPTUREPOLARITY(&htim1, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_RISING); + //printf("cc: %ld \r\n", capture_Cnt); + //TIM_SET_CAPTUREPOLARITY(&htim1, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_RISING); + __HAL_TIM_SET_CAPTUREPOLARITY(&htim1,TIM_CHANNEL_2,TIM_INPUTCHANNELPOLARITY_RISING); HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_2); // or _HAL_TIM_ENABLE(&htim1); break; case 3: high_time = capture_Buf[1] - capture_Buf[0]; // high time - printf("ht: %ld ", high_time); + low_time = capture_Buf[2] - capture_Buf[1]; // low time + if (low_time/high_time > 2) printf("_"); + if (high_time/low_time > 2) printf("+"); // HAL_UART_Transmit(&huart2, (uint8_t*)high_time, 1, 0xffff); // print high time - HAL_Delay(1000); //delay 1 s + //HAL_Delay(1000); //delay 1 s + //HAL_Delay_Us(1000000); capture_Cnt = 0; // clear flag break; } @@ -405,7 +412,8 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) case DATA_433_PIN: //printf("^"); - RF_Signal_Decode(); + HAL_TIM_IC_CaptureCallback(&htim1); + //RF_Signal_Decode(); break; diff --git a/Core/Src/stm32wlxx_hal_msp.c b/Core/Src/stm32wlxx_hal_msp.c index 7d0ab63..73369f8 100644 --- a/Core/Src/stm32wlxx_hal_msp.c +++ b/Core/Src/stm32wlxx_hal_msp.c @@ -74,6 +74,74 @@ void HAL_MspInit(void) } +/** +* @brief TIM_IC MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_ic: TIM_IC handle pointer +* @retval None +*/ +void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim_ic->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PA9 ------> TIM1_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* TIM1 interrupt Init */ + HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } + +} + +/** +* @brief TIM_IC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_ic: TIM_IC handle pointer +* @retval None +*/ +void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic) +{ + if(htim_ic->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + + /**TIM1 GPIO Configuration + PA9 ------> TIM1_CH2 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); + + /* TIM1 interrupt DeInit */ + HAL_NVIC_DisableIRQ(TIM1_CC_IRQn); + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } + +} + /** * @brief TIM_Base MSP Initialization * This function configures the hardware resources used in this example diff --git a/Core/Src/stm32wlxx_it.c b/Core/Src/stm32wlxx_it.c index f3b7ccc..a8ac49a 100644 --- a/Core/Src/stm32wlxx_it.c +++ b/Core/Src/stm32wlxx_it.c @@ -369,10 +369,10 @@ void EXTI9_5_IRQHandler(void) __HAL_GPIO_EXTI_CLEAR_IT(RC_D5_Pin); #endif - HAL_GPIO_EXTI_IRQHandler(BUT3_Pin); + //HAL_GPIO_EXTI_IRQHandler(BUT3_Pin); HAL_GPIO_EXTI_IRQHandler(DATA_433_PIN); - //__HAL_GPIO_EXTI_CLEAR_IT(DATA_433_PIN); + __HAL_GPIO_EXTI_CLEAR_IT(DATA_433_PIN); /* USER CODE BEGIN EXTI9_5_IRQn 1 */ @@ -459,13 +459,14 @@ void SUBGHZ_Radio_IRQHandler(void) } /* USER CODE BEGIN 1 */ - +#if 0 void TIM1_IRQHandler(void) { TIM1_cnt++; HAL_TIM_IRQHandler(&htim1); } -#if 0 +#endif +#if 1 /** * @brief This function handles TIM1 Capture Compare Interrupt. */ @@ -480,6 +481,8 @@ void TIM1_CC_IRQHandler(void) /* USER CODE END TIM1_CC_IRQn 1 */ } #endif + +#if 1 /** * @brief This function handles TIM1 Capture Compare Interrupt. */ @@ -495,5 +498,5 @@ void TIM1_IC_IRQHandler(void) /* USER CODE END TIM1_CC_IRQn 1 */ } - +#endif /* USER CODE END 1 */ diff --git a/STM32CubeIDE/Release/WL55JC_AS923.elf b/STM32CubeIDE/Release/WL55JC_AS923.elf index 39af0da1f10e8d82ff145873e91f481ebd0ba1c5..c62f420d56c71fd3d064fa0c94b054d3c54dd9b3 100644 GIT binary patch delta 24411 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