前言
感觉还是直接上定时器就好,后面再更新几种按键,包括阻塞式和非阻塞式,学了定时器更好理解非阻塞式
STM32CubeMX定时器配置
假设我选的是定时器2
1.按红色方框选择
2.查看定时器连接的时钟对应的频率
可以看出APB1和APB2都是64M
3.设置定时时间
假设我想要的是500ms一次
那么((6400-1+1)*(5000-1+1))/64 000 000=0.5s
主要是看0的个数,6个0就是秒,5个0就是100s为单位,以此类推
4.使能中断
5.然后生成文件
keil配置
1.在初始化后面加上使能中断函数
HAL_TIM_Base_Start_IT(&htim2);
2.在tim.c文件加上定时器中断回调函数,并编写定时任务
在文件末尾添加
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if(htim == &htim2)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);
}
}
烧录后实现LED灯每500ms翻转