plant_manage/plan_manage_main/src/app/knob.c
forbelief e9d7d4dfbc modified: plan_manage_main/ewp/plan_manage_main.dep
modified:   plan_manage_main/ewp/settings/plan_manage_main.dbgdt
	modified:   plan_manage_main/ewp/settings/plan_manage_main.dni
	modified:   plan_manage_main/src/app/debug.c
	modified:   plan_manage_main/src/app/include/config.h
	modified:   plan_manage_main/src/app/include/debug.h
	modified:   plan_manage_main/src/app/include/input.h
	modified:   plan_manage_main/src/app/include/key.h
	modified:   plan_manage_main/src/app/include/knob.h
	modified:   plan_manage_main/src/app/include/pm_init.h
	modified:   plan_manage_main/src/app/include/simulat_timer.h
	modified:   plan_manage_main/src/app/include/tft.h
	modified:   plan_manage_main/src/app/include/time.h
	modified:   plan_manage_main/src/app/key.c
	modified:   plan_manage_main/src/app/knob.c
	modified:   plan_manage_main/src/app/main.c
	modified:   plan_manage_main/src/app/pm_init.c
	modified:   plan_manage_main/src/app/simulat_timer.c
	modified:   plan_manage_main/src/app/tft.c
	modified:   plan_manage_main/src/app/time.c
	modified:   settings/plan_manage.wsdt

完成tft基础功能
2016-04-17 10:36:06 +08:00

95 lines
1.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* knob.c - 提供旋钮输入的接口函数
*
* 使用的是一个数字旋钮,利用计数来采集输入
*/
#include <stdint.h>
#include "include.h"
#include "include/knob.h"
#include "include/config.h"
static volatile int32_t knob_val;
/*
* knob_init() - 为旋钮输入而执行的初始化
*
* 旋钮的检测初始化后默认是禁止的
*/
void knob_init(void)
{
gpio_Interrupt_init(KNOB_A_PINX, GPI_UP_PF, GPI_INP_EITH);
gpio_Interrupt_init(KNOB_B_PINX, GPI_UP_PF, GPI_DISAB);
// gpio_Interrupt_init(KNOB_KEY_PINX, GPI_UP_PF, GPI_INP_EITH);
disable_irq(PortD_irq_no);
}
/*
* knob_enable() - 使能旋钮脉冲检测
*/
void knob_enable(void)
{
enable_irq(PortD_irq_no);
return;
}
/*
* knob_disable() - 禁止旋钮脉冲检测
*/
void knob_disable(void)
{
disable_irq(PortA_irq_no);
return;
}
/*
* knob_clear() - 清除旋钮值
*/
void knob_clear(void)
{
knob_val = 0;
return;
}
/*
* get_knob_val() - 返回旋钮值
*/
int32_t get_knob_val(void)
{
return knob_val;
}
/*
* knob_detect() - 旋钮检测
*
* 这个函数需要在旋钮编码器的A相输出发生沿跳变时调用即上下沿中断时
*/
void knob_detect(void)
{
uint8_t knob_A, knob_B;
knob_A = gpio_get(KNOB_A_PINX);
knob_B = gpio_get(KNOB_B_PINX);
if ((knob_A == 0 && knob_B == 1) || (knob_A == 1 && knob_B == 0))
{
knob_val++;
}
else // 即if ((knob_A == 0 && knob_B == 0) || (knob_A == 1 && knob_B == 1))
{
knob_val--;
}
return;
}