|
int main(void)
{
/*
ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在 system_stm32f4xx.c 文件,主要功能是
配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM
*/
bsp_Init(); /* 硬件初始化 */
//EXTI_Config();
PrintfLogo(); /* 打印例程名称和版本等信息 */
PrintfHelp(); /* 打印操作提示 */
bsp_StartAutoTimer(0,300);
bsp_StartAutoTimer(1,1000);
/* 主程序大循环 */
while (1)
{
bsp_Idle(); /* CPU空闲时执行的函数,在 bsp.c */
/* 摇杆左右键(上下键)控制LED流动 */
// if (fRefresh)
// {
// fRefresh = 0;
// #if 0 /* 可以用 printf打印数据到串口 */
// printf("count = %6d \r", count);
// #else /* 也可以用 sprintf先输出到一个buf,然后在发送到串口 */
// {
// char buf[64];
//
// sprintf(buf, "count = %6d \r", count);
//
// comSendBuf(COM1, (uint8_t *)buf, strlen(buf));
// }
// #endif
// }
if (comGetChar(COM1, &read))
{
switch (read)
{
case '1':
bsp_LedToggle(1);
printf("bsp_LedToggle(1) \r\n");
break;
case '2':
bsp_LedToggle(2);
printf("bsp_LedToggle(2) \r\n");
break;
case '3':
bsp_LedToggle(3);
printf("bsp_LedToggle(3) \r\n");
break;
case '4':
bsp_LedToggle(4);
printf("bsp_LedToggle(4) \r\n");
break;
case '5':
printf("MCU RESET!! \r\n");
bsp_DelayMS(2);
__set_FAULTMASK(1);
NVIC_SystemReset();
case '6':
AutoPrint = 1;
printf("AutoPrint = 1!! \r\n");
break;
case '7':
AutoPrint = 2;
printf("AutoPrint = 2!! \r\n");
break;
case '8':
AutoPrint = 0;
printf("AutoPrint = 0!! \r\n");
break;
}
}
if(bsp_CheckTimer(0) == 1)
{
if(AutoPrint == 1)
{
bsp_LedToggle(1);
bsp_LedToggle(2);
bsp_LedToggle(3);
bsp_LedToggle(4);
SEGGER_RTT_printf(0,"bsp_CheckTimer(0) \r\n");
printf("bsp_CheckTimer(0) \r\n");
}
}
if(bsp_CheckTimer(1) == 1)
{
if(AutoPrint == 2)
{
bsp_LedToggle(1);
bsp_LedToggle(2);
bsp_LedToggle(3);
bsp_LedToggle(4);
SEGGER_RTT_printf(0,"bsp_CheckTimer(1) \r\n");
printf("bsp_CheckTimer(1) \r\n");
}
}
/* 处理按键事件 */
ucKeyCode = bsp_GetKey();
if (ucKeyCode > 0)
{
/* 有键按下 */
switch (ucKeyCode)
{
case KEY_1_DOWN: /* K1独立按键 */
AutoPrint = 1;
printf("KEY_1_DOWN-----------\r\n");
break;
case KEY_2_DOWN: /* K2独立按键 */
AutoPrint = 2;
printf("KEY_2_DOWN = 2-----------\r\n");
break;
case KEY_9_DOWN: /* K1 K2组合按键 */
AutoPrint = 0;
printf("KEY_1_DOWN && KEY_2_DOWN-----------\r\n");
break;
// case JOY_DOWN_U: /* 摇杆UP键按下 */
// count++;
// fRefresh = 1;
// break;
//
// case JOY_DOWN_D: /* 摇杆DOWN键按下 */
// count--;
// fRefresh = 1;
// break;
// case JOY_DOWN_OK: /* 摇杆OK键按下 */
// break;
//
default:
break;
}
}
}
}
打印信息
KEY_2_DOWN = 2-----------
bsp_CheckTimer(1)
bsp_CheckTimer(1)
KEY_2_DOWN = 2-----------
bsp_CheckTimer(1)
KEY_1_DOWN-----------
KEY_1_DOWN && KEY_2_DOWN-----------
KEY_1_DOWN-----------
KEY_1_DOWN && KEY_2_DOWN-----------
KEY_1_DOWN-----------
KEY_1_DOWN && KEY_2_DOWN-----------
KEY_1_DOWN-----------
KEY_1_DOWN && KEY_2_DOWN-----------
只有两个按键,独立按K2 正常,但是独立按K1 会激活K1和K2复合按键,研究了一晚上。。。
|
|