思路:
设置一个IO为带弱上拉的输入模式,用于实现按键功能
设置一个IO为输出模式,用于驱动LED开关状态;
在主循环函数进行LED闪烁操作,即翻转后执行一个带传入参数的延时函数;
然后执行按键扫描程序,当按键被按下,按键函数修改延时函数的参数。
通过MCC创建工程,按键和LED的端口配置如下所示:
点击Generate生产工程代码,然后完善main.c文件如下:
#include "mcc_generated_files/mcc.h"
void get_button(int *i)
{
__delay_ms(5);
if(BUTTON_GetValue()==0)
{
while(BUTTON_GetValue()==0);
(*i)--;
if(*i<=0) *i=10;
}
}
void main(void)
{
int t=10;
int i=0;
SYSTEM_Initialize();
while (1)
{
LED_Toggle();
get_button(&t);
for(i=0;i<t;i++)
__delay_ms(50);
}
}
编译,烧录,LED刚开始以1Hz闪烁,每按一下快一点,当最快到10Hz时候,再按下就回到了1Hz的频率。
|