目录
cubeMX配置:
代码模板:
最终模板
注意:
cubeMX配置:
原理图
引脚配置为上拉模式
定时器
使用定时器3(通用定时器,使用外部晶振,内部时钟),分频系数为80(从0开始则为80-1),则每1s 1m次,定时评率为为10000,对应1s 1m/10000次,频率为10ms每次
一定记得开启NVIC使能中断
编写中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
代码模板:
思路:
单个单机按键带长按键判断—>单个单机按键加双击按键,同时修复长按键误触发短按键功能bug—>4个单机按键加双击按键,同时优化代码,修改bug
开始之前:重整了工程结构
删除common.c/.h
在main.h中加入
#define uint unsigned int
#define uchar unsigned char
在main.c中引用自定义库:
#include "led.h"
在自定义库的.h改引用main.h,代替common.h
Interrupt.c:
#include "interrupt.h" // 引入头文件 interrupt.h
uchar judge_state=0,key_num=100,key_time=0; // 定义全局变量 judge_state 表示按键状态,key_num 表示按键编号,key_time 表示按键按下的时间
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) // 定义定时器中断回调函数
{
if(htim->Instance==TIM3) // 判断是否是定时器3的事件
{
switch (judg