📄 user_func.c
字号:
// 定义用户模块
#include "user_func.h"
LPC_INT8U ButtCount1,ButtCount2,ButtFlags;
int TickSysFlag;
/*************************************************************************
* 说明:ButtonsInit函数,按键初始化
* 参数:无
* 返回值:无
*************************************************************************/
void ButtonsInit (void) {
IO0DIR_bit.P0_15 = IO0DIR_bit.P0_16 = 0; // 配置按键引脚为输入
ButtFlags = ButtCount1 = ButtCount2 = 0; // 键变量初始化按
}
/*************************************************************************
* 说明:Buttons函数,执行按键功能
* 参数:无
* 返回值:无
*************************************************************************/
void Buttons (void) {
if (!IO0PIN_bit.P0_15) {
if(ButtCount1 > BUTT_DEB) {
if((ButtFlags & BUTT_FLAG_1) == 0) {
ButtFlags |= BUTT_FLAG_1+BUTT_EVENT_1;
}
}
else {
++ButtCount1;
}
}
else {
if(ButtCount1 == 0) {
if(ButtFlags & BUTT_FLAG_1) {
ButtFlags &= ~(BUTT_FLAG_1+BUTT_EVENT_1);
}
}
else {
--ButtCount1;
}
}
if (!IO0PIN_bit.P0_16) {
if(ButtCount2 > BUTT_DEB) {
if((ButtFlags & BUTT_FLAG_2) == 0) {
ButtFlags |= BUTT_FLAG_2+BUTT_EVENT_2;
}
}
else {
++ButtCount2;
}
}
else {
if(ButtCount2 == 0) {
if(ButtFlags & BUTT_FLAG_2) {
ButtFlags &= ~(BUTT_FLAG_2+BUTT_EVENT_2);
}
}
else {
--ButtCount2;
}
}
}
/*************************************************************************
* 说明:GetButtonsEvent函数,返回按键结果
* 参数:无
* 返回值:LPC_INT8U
*************************************************************************/
LPC_INT8U GetButtonsEvent (void) {
LPC_INT8U Events = ButtFlags & (BUTT_EVENT_1|BUTT_EVENT_2);
return Events;
}
/*************************************************************************
* 说明:SetSysTickFlag函数,设置系统节拍并扫描按键
* 参数:void* arg
* 返回值:无
*************************************************************************/
void SetSysTickFlag (void* arg) {
int* pFlag = (int *)arg;
*pFlag = 1;
Buttons();
}
/*************************************************************************
* 说明:ADC_Init函数,ADC模块初始化。
* 参数:无
* 返回值:无
*************************************************************************/
void ADC_Init (void) {
PINSEL1_bit.P0_30 = 1; // ADC通道3被连接到引脚P0.30
AD0CR_bit.SEL = 1<<3; // 设置ADC
AD0CR_bit.CLKDIV = SYS_GetFpclk()/MAX_ADC_FREQ;
AD0CR_bit.BURST = 0;
AD0CR_bit.PDN = 1;
AD0CR_bit.TEST = 0;
AD0CR_bit.START = 0;
}
/*************************************************************************
* 说明:ADC_Measure函数,测量ADC通道3上的电压
* 参数:无
* 返回值:unsigned int
*************************************************************************/
unsigned int ADC_Measure (void) {
AD0CR_bit.START = 1; // 启动ADC
while((AD0DR&0x80000000) == 0); // 等待ADC转换结果
return(AD0DR_bit.VVDDA);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -