STM32脉冲计数(ETR)
本次我们使用STM32F103RCT6(mini)最小系统板和STM32cubeMX来教学
首先:基本的配置:时钟、下载配置、串口(用于显示,记得重写fputc函数)
然后随便配置一个定时器用于计数
配置的参数根据需要进行设置
随便看看中文
我配置了一个1S的定时器用于显示,记得开启中断。主频是72Mhz,自己算一下,根据自己的单片机来。
然后生成文件(记得使用微库Use MicroLIB)
开启定时器中断
我在定时器2中断里面加一个串口打印,然后把ETR引脚接到了一个上拉的按键上(最好加个电容,不然容易有噪音),用于1S内的按键计数,
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
//HAL_TIM_Base_Start_IT(&htim2);//开启定时器2的中断
static unsigned char ledState = 0;//计满256个数程序就跑飞
static char TEMP[100];
if (htim == (&htim2))
{
ledState++;
printf("%d\r\n",ledState);
printf("按键的频率是: %d \r\n",htim1.Instance->CNT);
htim1.Instance->CNT = 0;
}
}
前面是显示的时间,按键就是我这一秒按了多少下