|
STM32F1定时器实验-外部触发脉冲计数 之前我们用外部中断测量了PWM的频率,而外部触发是设置2个定时器,利用按键触发,一个定时器2用来接受外部触发信号并计数,另一个定时器6实时检测按键。 按照这样的思路,我们的按键读取用状态机思想去读取,使定时器6产生10ms的定时中断来实时检测按键并利用状态机设计思想处理按键信号,将PA1设置成输出引脚,设置定时器2的PA0引脚来接收信号,通过按键触发改变标志位来发送电平信号,再定义全局数存放PA0接收脉冲信号次数,最后串口配置。 说实话,状态机思想可以清晰把你的代码逻辑弄清楚,这个是我自己写按键时画的草图:
画的只要你自己可以看懂就行 代码讲解 首先我们需要按键的状态,它的状态分为检测,按下,释放,所以定义枚举类型的结构体
状态变量的定义以及标志位,计数值
对于按键检测,是在TIM6里处理的,选用KEY1即PE3
而之间的状态转移是通过判断电平实现的,按下时为低电平,未按下为高电平,根据我们按下的一个完整过程,我们可以通过switch语句实现我们的整个过程
主函数内
CUBEMX配置 1.时钟配置外部晶振,主时钟为72MHz
2.GPIO:选择PA1输出,PE3输入
3.TIM: TIM2:Clock Source:外部触发
这时PA0为你的触发引脚
TIM6:激活并生成10ms中断
4.usart设置
5.Project的设置,
还有一个之前没注意,就是在Code Generator一栏中第一个方框里选择第二个:Copy only the necessary library files,要不一个工程就是百八十MB,占内存。
最后生成代码 ———————————————— 版权声明:南山笑 如有侵权请联系删除 |
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
STM32固件库分享,超全系列整理
【MCU实战经验】基于STM32F103的二轮平衡车(6轴上位机 源代...
微信公众号
手机版