131 lines
2.6 KiB
C
131 lines
2.6 KiB
C
#include "awtk.h"
|
||
#include "key_protocol.h"
|
||
#include "gpio_protocol.h"
|
||
#include "board.h"
|
||
#include "chip.h"
|
||
#include "data_port.h"
|
||
#include "gear_protocol.h"
|
||
|
||
// 定义定时器句柄
|
||
TimerHandle_t xTimer;
|
||
uint8_t GPIO_value_high[7];
|
||
|
||
#define IO_KEEP 4
|
||
void grade_key(void){
|
||
uint8_t Gear_value = 7;
|
||
//数据顺序 N 1 2 3 4 5 6 ABS TCS FAN ENG YG R L RMT
|
||
//挡位高电平触发, 灯光、ABS、TCS、FAN ENG 低电平触发
|
||
if(gpio_get_value(GPIO_GRADE_N))
|
||
{
|
||
GPIO_value_high[GPIO_N]++;
|
||
if(GPIO_value_high[GPIO_N] == IO_KEEP)
|
||
{
|
||
Gear_value = 0;
|
||
printf("N\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_N] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D1))
|
||
{
|
||
GPIO_value_high[GPIO_D1]++;
|
||
if(GPIO_value_high[GPIO_D1] == IO_KEEP)
|
||
{
|
||
Gear_value = 1;
|
||
printf("D1\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D1] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D2))
|
||
{
|
||
GPIO_value_high[GPIO_D2]++;
|
||
if(GPIO_value_high[GPIO_D2] == IO_KEEP)
|
||
{
|
||
Gear_value = 2;
|
||
printf("D2\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D2] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D3))
|
||
{
|
||
GPIO_value_high[GPIO_D3]++;
|
||
if(GPIO_value_high[GPIO_D3] == IO_KEEP)
|
||
{
|
||
Gear_value = 3;
|
||
printf("D3\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D3] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D4))
|
||
{
|
||
GPIO_value_high[GPIO_D4]++;
|
||
if(GPIO_value_high[GPIO_D4] == IO_KEEP)
|
||
{
|
||
Gear_value = 4;
|
||
printf("D4\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D4] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D5))
|
||
{
|
||
GPIO_value_high[GPIO_D5]++;
|
||
if(GPIO_value_high[GPIO_D5] == IO_KEEP)
|
||
{
|
||
Gear_value = 5;
|
||
printf("D5\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D5] = 0;
|
||
|
||
if(gpio_get_value(GPIO_GRADE_D6))
|
||
{
|
||
GPIO_value_high[GPIO_D6]++;
|
||
if(GPIO_value_high[GPIO_D6] == IO_KEEP)
|
||
{
|
||
Gear_value = 6;
|
||
printf("D6\r\n");
|
||
}
|
||
}
|
||
else
|
||
GPIO_value_high[GPIO_D6] = 0;
|
||
|
||
Set_sys_grade(Gear_value);
|
||
}
|
||
|
||
// 定时器回调函数
|
||
void vTimerCallback(TimerHandle_t xTimer) {
|
||
// 定时器到期时执行的代码
|
||
//按键检测
|
||
check_key();
|
||
//档位检测
|
||
grade_key();
|
||
}
|
||
|
||
void Moto_gpio_timer(void) {
|
||
|
||
// 创建定时器
|
||
xTimer = xTimerCreate("MyTimer", // 定时器名称
|
||
pdMS_TO_TICKS(20), // 定时器周期(1000毫秒)
|
||
pdTRUE, // 自动重载定时器
|
||
(void *)0, // 定时器 ID
|
||
vTimerCallback); // 回调函数
|
||
|
||
// 启动定时器
|
||
if (xTimerStart(xTimer, 0) != pdPASS) {
|
||
// 启动定时器失败的处理
|
||
printf("xTimer error!!!!!!!!!!!!!!!!!.\r\n");
|
||
}
|
||
|
||
}
|
||
|