在之前的两节课我们分别学习了串口和定时器的使用后,我们来综合一下这两个模块来设计一个程序。功能是配合按键,点亮LED灯。按其中一个按键,LED灯按照300ms延时点亮LED灯。按另外一个按键,LED灯按照500ms延时点亮LED灯。并且串口输出对应的延时时间给外部设备。
一、Protues仿真图
二、MDK代码
while(1) //进入死循环
{
t=KEY_Scan(t); //t赋状态值
switch(t) //选择状态
{
case KEY1_PRES : //PA1按下
{ TIM_ITConfig( TIM2, TIM_IT_Update ,DISABLE);//TIM2失能
TIM_ITConfig( TIM3, TIM_IT_Update ,ENABLE); //TIM3使能
if(print_con!=t) //状态改变
{
printf("500ms\r\n"); //输出500ms
print_con=t; //赋当前状态值
}
break; //跳出选择
}
case KEY0_PRES : //PA2按下
{ TIM_ITConfig( TIM3, TIM_IT_Update ,DISABLE); //TIM3失能
TIM_ITConfig( TIM2, TIM_IT_Update ,ENABLE); //TIM2使能
if(print_con!=t) //状态改变
{
printf("300ms\r\n"); //输出300ms
print_con=t; //赋当前状态值
}
break; //跳出选择
}
case 0 : //该开始没按按键时
{
LED0=1; //PB0高电平灯灭
break; //跳出选择
}
}
}
三、仿真效果和源代码资源
基于Proteus无实物零基础STM32入门自学教程(八)stm32定时器和串口综合程序_proteus8.13下载及安装-嵌入式文档类资源-CSDN下载