⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user_func.c

📁 IAR EWARM嵌入式系统编程与实践光盘源码
💻 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 + -