#include "TgcConfig.h"
#include "my_usb.h"

/*******************************************************************************
* Function Name : TgcAdcInitial
* Description : ADC1³õʼ»¯£¬8¹æÔòͨµÀ
* Input : ÎÞ
* Return : ÎÞ
*******************************************************************************/
void TgcAdcInitial(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //ʹÄÜADC1ͨµÀʱÖÓ

RCC_ADCCLKConfig(RCC_PCLK2_Div6); //ÉèÖÃADC·ÖƵÒò×Ó6 72M/6=12,ADC×î´óʱ¼ä²»Äܳ¬¹ý14M

//PA1 ×÷ΪģÄâͨµÀÊäÈëÒý½Å
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //Ä£ÄâÊäÈëÒý½Å
GPIO_Init(GPIOA, &GPIO_InitStructure);

ADC_DeInit(ADC1); //¸´Î»ADC1

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC¹¤×÷ģʽ:ADC1ºÍADC2¹¤×÷ÔÚ¶ÀÁ¢Ä£Ê½
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //Ä£Êýת»»¹¤×÷ÔÚµ¥Í¨µÀģʽ
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //Ä£Êýת»»¹¤×÷ÔÚµ¥´Îת»»Ä£Ê½
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //ת»»ÓÉÈí¼þ¶ø²»ÊÇÍⲿ´¥·¢Æô¶¯
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADCÊý¾ÝÓÒ¶ÔÆë
ADC_InitStructure.ADC_NbrOfChannel = 1; //˳Ðò½øÐйæÔòת»»µÄADCͨµÀµÄÊýÄ¿
ADC_Init(ADC1, &ADC_InitStructure); //¸ù¾ÝADC_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèADCxµÄ¼Ä´æÆ÷

ADC_Cmd(ADC1, ENABLE); //ʹÄÜÖ¸¶¨µÄADC1

ADC_ResetCalibration(ADC1); //ʹÄܸ´Î»Ð£×¼

while(ADC_GetResetCalibrationStatus(ADC1)); //µÈ´ý¸´Î»Ð£×¼½áÊø

ADC_StartCalibration(ADC1); //¿ªÆôADУ׼

while(ADC_GetCalibrationStatus(ADC1)); //µÈ´ýУ׼½áÊø

// ADC_SoftwareStartConvCmd(ADC1, ENABLE); //ʹÄÜÖ¸¶¨µÄADC1µÄÈí¼þת»»Æô¶¯¹¦ÄÜ

}

/*******************************************************************************
* Function Name : AdcGetData
* Description : »ñȡͨµÀÖµ
* Input : ͨµÀ
* Return : ÎÞ
*******************************************************************************/
int AdcGetData(int Channel)
{
int GetData;
//ÉèÖÃÖ¸¶¨ADCµÄ¹æÔò×éͨµÀ£¬Ò»¸öÐòÁУ¬²ÉÑùʱ¼ä
ADC_RegularChannelConfig(ADC1, Channel, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADCͨµÀ,²ÉÑùʱ¼äΪ239.5ÖÜÆÚ

ADC_SoftwareStartConvCmd(ADC1, ENABLE); //ʹÄÜÖ¸¶¨µÄADC1µÄÈí¼þת»»Æô¶¯¹¦ÄÜ

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//µÈ´ýת»»½áÊø

GetData = ADC_GetConversionValue(ADC1);

GetData = GetData * 100 / 4095; //Ó³Éäµ½0-100

return GetData; //·µ»Ø×î½üÒ»´ÎADC1¹æÔò×éµÄת»»½á¹û
}

/*******************************************************************************
* Function Name : TgcGetData
* Description : »ñȡÿ¸öͨµÀƽ¾ùÖµ£¬È¡10´Î
* Input : ͨµÀ
* Return : ƽ¾ùÖµ
*******************************************************************************/
int TgcGetData(int Channel)
{
int i;
int DataSum = 0;
for(i = 10; i > 0; i--)
DataSum = DataSum + AdcGetData(Channel);

return DataSum/10;
}

/*******************************************************************************
* Function Name : TgcSendUsb
* Description : ͨ¹ýUSB½«Ã¿¸öͨµÀÖµ·¢Ë͸øÉÏλ»ú
* Input : ÎÞ
* Return : ÎÞ
*******************************************************************************/
void TgcSendUsb(void)
{
uint8_t UsbDataSend[4];
UsbDataSend[0] = 0x02;
UsbDataSend[2] = 0x00;

if(TgcTimeCnt > 20)
{
TgcTimeCnt = 0;
//TGCͨµÀ0·¢ËÍ
UsbDataSend[1] = 0x00; //channel_0
UsbDataSend[3] = TgcGetData(TgcChannel_0);
if(UsbDataSend[3] != TgcOldData_0)
UsbSendData(UsbDataSend,4);
TgcOldData_0 = UsbDataSend[3];

//TGCͨµÀ1·¢ËÍ
UsbDataSend[1] = 0x01; //channel_1
UsbDataSend[3] = TgcGetData(TgcChannel_1);
if(UsbDataSend[3] != TgcOldData_1)
UsbSendData(UsbDataSend,4);
TgcOldData_1 = UsbDataSend[3];

//TGCͨµÀ2·¢ËÍ
UsbDataSend[1] = 0x02; //channel_2
UsbDataSend[3] = TgcGetData(TgcChannel_2);
if(UsbDataSend[3] != TgcOldData_2)
UsbSendData(UsbDataSend,4);
TgcOldData_2 = UsbDataSend[3];

//TGCͨµÀ3·¢ËÍ
UsbDataSend[1] = 0x03; //channel_3
UsbDataSend[3] = TgcGetData(TgcChannel_3);
if(UsbDataSend[3] != TgcOldData_3)
UsbSendData(UsbDataSend,4);
TgcOldData_3 = UsbDataSend[3];

//TGCͨµÀ4·¢ËÍ
UsbDataSend[1] = 0x04; //channel_4
UsbDataSend[3] = TgcGetData(TgcChannel_4);
if(UsbDataSend[3] != TgcOldData_4)
UsbSendData(UsbDataSend,4);
TgcOldData_4 = UsbDataSend[3];

//TGCͨµÀ5·¢ËÍ
UsbDataSend[1] = 0x05; //channel_5
UsbDataSend[3] = TgcGetData(TgcChannel_5);
if(UsbDataSend[3] != TgcOldData_5)
UsbSendData(UsbDataSend,4);
TgcOldData_5 = UsbDataSend[3];

//TGCͨµÀ6·¢ËÍ
UsbDataSend[1] = 0x06; //channel_6
UsbDataSend[3] = TgcGetData(TgcChannel_6);
if(UsbDataSend[3] != TgcOldData_6)
UsbSendData(UsbDataSend,4);
TgcOldData_6 = UsbDataSend[3];

//TGCͨµÀ7·¢ËÍ
UsbDataSend[1] = 0x07; //channel_7
UsbDataSend[3] = TgcGetData(TgcChannel_7);
if(UsbDataSend[3] != TgcOldData_7)
UsbSendData(UsbDataSend,4);
TgcOldData_7 = UsbDataSend[3];
}

if(Tgc1sCnt > 2000)
{
Tgc1sCnt = 0;
//TGCͨµÀ0·¢ËÍ
UsbDataSend[1] = 0x00; //channel_0
UsbDataSend[3] = TgcGetData(TgcChannel_0);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ1·¢ËÍ
UsbDataSend[1] = 0x01; //channel_1
UsbDataSend[3] = TgcGetData(TgcChannel_1);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ2·¢ËÍ
UsbDataSend[1] = 0x02; //channel_2
UsbDataSend[3] = TgcGetData(TgcChannel_2);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ3·¢ËÍ
UsbDataSend[1] = 0x03; //channel_3
UsbDataSend[3] = TgcGetData(TgcChannel_3);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ4·¢ËÍ
UsbDataSend[1] = 0x04; //channel_4
UsbDataSend[3] = TgcGetData(TgcChannel_4);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ5·¢ËÍ
UsbDataSend[1] = 0x05; //channel_5
UsbDataSend[3] = TgcGetData(TgcChannel_5);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ6·¢ËÍ
UsbDataSend[1] = 0x06; //channel_6
UsbDataSend[3] = TgcGetData(TgcChannel_6);
UsbSendData(UsbDataSend,4);
while(Tgc1sCnt < 20);
Tgc1sCnt = 0;
//TGCͨµÀ7·¢ËÍ
UsbDataSend[1] = 0x07; //channel_7
UsbDataSend[3] = TgcGetData(TgcChannel_7);
UsbSendData(UsbDataSend,4);
}
}

ADC获取滑块的值(8通道)的更多相关文章

  1. grails项目获取前后台的值

    grails项目中前台传值给后台: 加入我有a.gsp这个页面,a.gsp中有如下代码: 姓名:<input type="text" name="xing" ...

  2. C#获取存储过程返回值和输出参数值的方法

    //转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...

  3. 在java中获取attr的值

    首先说如何获取已经在style里面定义好的attr的值,以colorPrimary为例: TypedValue value = new TypedValue(); mContext.getTheme( ...

  4. Python从线程获取函数返回值

    Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...

  5. RadGrid使用技巧:从RadGrid获取绑定的值

    本文主要介绍从RadGrid获取绑定的值,仅适用于Telerik RadControls for asp.net ajax. 获取方式 RadGrid把绑定的值存储在VIewState中,即使View ...

  6. jQuery easyui combobox获取值|easyui-combobox获取多个值

    Query easyui combobox事例:            name="language"             data-options="        ...

  7. MVC控制器获取@Html.DropDownList值

    MVC控制器获取@Html.DropDownList值 发表于 2014 年 4 月 1 日 作者 efour — 暂无评论 先贴一段代码,演示@Html.DropDownList的使用. 前台 前台 ...

  8. 获取radio和select的值,获取select的值

    获取radio的值 var val=$('input:radio[name="_objId"]:checked').val(); jQuery中获得选中select值 第一种方法$ ...

  9. jquery 获取属性的值

    jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式. 1.  attr( 属 ...

随机推荐

  1. java~springboot~ibatis数组in查询的实现

    在ibatis的xml文件里,我们去写sql语句,对应mapper类的方法,这些sql语句与控制台上没什么两样,但在有些功能上需要注意,如where in这种从数组里查询符合条件的集合里,需要在xml ...

  2. DirectX11 初探XMVECOTR&XMMATRIX

    初探DX11的数学库:向量XMVECOTR,矩阵XMMATRIX |XMVECTOR(XNA数学库的向量) DirectX中的一个核心数据类型为 XMVECTOR对它的运算可以使用SIMD指令集加速( ...

  3. Asp.NetCore轻松学-业务重点-实现一个简单的手机号码验证

    前言     本文纯干货,直接拿走使用,不用付费.在业务开发中,手机号码验证是我们常常需要面对的问题,目前市场上各种各样的手机号码验证方式,比如正则表达式等等,本文结合实际业务场景,在业务级别对手机号 ...

  4. Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)

    JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据 ...

  5. 【转载】Win10系统如何设置所有程序默认以管理员身份运行?

    在win10系统中有些用户发现一些程序只有使用管理员身份运行能才打开,这样的话就感觉会麻烦很多,那么有没有办法设置所有程序都默认以管理员身份运行,而无需我们一个一个右键点击再打开呢? 目前最好的方法就 ...

  6. jQuery获取或设置元素的宽度和高度

    jQuery获取或设置元素的宽度和高度: 可使用以下3种方法: 1,jQuery width() 和 height() 方法: 2,innerWidth() 和 innerHeight() 方法: 3 ...

  7. spring boot整合mybatis方式二

    方式二: pom文件导入maven依赖: <dependency> <groupId>org.springframework.boot</groupId> < ...

  8. @Data注解使用后在eclipse中get/set报错解决方法

    Maven项目中已经导入相关的lombok.jar包但是使用后仍提示无set/get方法 安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其 配置文件eclipse ...

  9. ASP.NET WebApi系列

    ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务. ASP.NET Web API 是一种用于在 .NET Framework 上构 ...

  10. js中console使用2

    接着上一篇js中console使用1,本片继续介绍js中console的用法 测试代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 ...