网上查到的代码都太长了,精简了下,功能完备。
环境:KEIL MDK5
实验板:STM32F103C8T6,仿真:JLINK OBV2,SEGGER RTT
#include "tim.h"
#include "SEGGER_RTT.H"
uint32_t Code=0;
uint32_t preCode;
uint8_t count=0;
uint16_t lenth;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
lenth= HAL_TIM_ReadCapturedValue(&htim16,TIM_CHANNEL_1);
// SEGGER_RTT_printf(0,"[%d ,%d]",lenth,count);
__HAL_TIM_SET_COUNTER(&htim16,0);
if(lenth<1500)
count++;
else
{
if(count==1&lenth<10000)
//###################################################连续按键
{SEGGER_RTT_printf(0,"repeat:[%08X]\r\n",preCode);
if(preCode==0xffa25c)
HAL_GPIO_TogglePin(led_GPIO_Port,led_Pin);
}
count=0;
}
if(count==33)
{