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

📄 main.c

📁 STR71x开发板上做AD转换的代码
💻 C
字号:
// main.c

#include "71x_lib.h"

u32 value,var;
u16 Conv_Res;

/*******************************************************************************
* 说明:ADC12_Calib函数,用于ADC12转换结果校准
* 参数:Conv_Res为转换结果,12位二进制补码
* 返回值:转换结果校准值,12位二进制无符号数
*******************************************************************************/
u16 ADC12_Calib(u16 Conv_Res) {
 if ((Conv_Res & 0x800) == 0x800)
     return (0x800 - (((~ Conv_Res)&0xFFF) +1));
 else {
   if ((Conv_Res & 0x800) == 0)
     return (Conv_Res + 0x800);
   else return 0;
  }
}

/*******************************************************************************
* 说明:通用延时函数
* 参数:无
* 返回值:无
*******************************************************************************/
void Generic_Wait(u32 var) {
  u32 i;
  for( i=0;i<=var;i++);
}
/*******************************************************************************
*                                    主函数
*******************************************************************************/
int main (void) {
 #ifdef DEBUG
  debug();
 #endif
  GPIO_Config (GPIO1, 0x0001, GPIO_HI_AIN_TRI); // 配置模拟输入通道
  GPIO_Config (GPIO1, 0x0100, GPIO_OUT_PP);     // 配置P1.8引脚为输出
  ADC12_Init();                                 // 初始化ADC寄存器
  ADC12_PrescalerConfig(100);                   // 配置预定标器,采样率=100Hz
  ADC12_ModeConfig (ADC12_SINGLE);              // 选择转换方式=单通道
  ADC12_ChannelSelect(ADC12_CHANNEL0);          // 选择转换通道
  ADC12_ConversionStart();                      // 启动转换
  while(1) {
      while (ADC12_FlagStatus (ADC12_DA0)==RESET);      // 查询标志,等待转换完毕
      Conv_Res = ADC12_ConversionValue(ADC12_CHANNEL0); // 读取换结果
      value=ADC12_Calib(Conv_Res);                      // 校准转换结果
      if (!GPIO_BitRead(GPIO1,9)) {
          GPIO_BitWrite(GPIO1,8,1);                     // 用电位器改变LED亮度
          Generic_Wait(0xFFF-value );                   // 实际上是通过电位器改变ADC输入电压
          GPIO_BitWrite(GPIO1,8,0);                     // 再根据不同电压的A/D转换值来改变LED的闪动间隔
          Generic_Wait(value);
      }
      else  {                                           // 压下BUT按键,LED开始闪动
          do {
            Generic_Wait(0xFFFF);
            GPIO_BitWrite(GPIO1,8,~GPIO_BitRead(GPIO1, 8));
          }
          while(GPIO_BitRead(GPIO1, 9)==0);
          GPIO_BitWrite(GPIO1,8,0);                     // 再次压下BUT按键,LED停止闪动
          Generic_Wait(0x1FFFF);
     }
  }
}
	
	
	
	
	
	




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -