思路:
设置一个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的频率。
|