STM32F1定时器实验-外部触发脉冲计数
之前我们用外部中断测量了PWM的频率,而外部触发是设置2个定时器,利用按键触发,一个定时器2用来接受外部触发信号并计数,另一个定时器6实时检测按键。
按照这样的思路,我们的按键读取用状态机思想去读取,使定时器6产生10ms的定时中断来实时检测按键并利用状态机设计思想处理按键信号,将PA1设置成输出引脚,设置定时器2的PA0引脚来接收信号,通过按键触发改变标志位来发送电平信号,再定义全局数存放PA0接收脉冲信号次数,最后串口配置。
说实话,状态机思想可以清晰把你的代码逻辑弄清楚,这个是我自己写按键时画的草图:
画的只要你自己可以看懂就行
代码讲解
首先我们需要按键的状态,它的状态分为检测,按下,释放,所以定义枚举类型的结构体
- /* USER CODE BEGIN PTD */
- typedef enum
- {
- KEY_CHECK=0,
- KEY_CONFRIM,
- KEY_RELAESE
- }KEY_STATE;
- /* USER CODE END PTD */
复制代码
状态变量的定义以及标志位,计数值
- /* USER CODE BEGIN PV */
- KEY_STATE keyState=KEY_CHECK;
- int Result=0;
- uint8_t keyvalue=0;
- /* USER CODE END PV */
复制代码
对于按键检测,是在TIM6里处理的,选用KEY1即PE3
[size=0.83em]c310f614ea674bd7a36bab52fe7556e9.png (29.32 KB, 下载次数: 0) 下载附件 [color=rgb(153, 153, 153) !important]昨天 17:21 上传
|