#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. Docker中完成Jenkins的安装

    去年就开始学习采用Docker+Jenkins+.Net Core搭建生成式流水线,一直拖到现在,也没有彻底的好好静下来去总结总结.趁着现在对自己的严格要求下,逐渐开始重视自我总结,以此来巩固逐渐失去 ...

  2. 前端笔记之服务器&Ajax(上)服务器&PHP&数据交互&HTTP

    一.服务器 1.1 什么是服务器,做什么的? 服务器,就是放在机房中的电脑,和我们的电脑的区别在与服务器有固定的IP,服务器的安全性和稳定性相当的高;性能一般就可以了,但是CPU的性能要比普通的客户机 ...

  3. Docker系列之基础实践篇(上)

    常用命令回顾 帮助命令 1.启动docker //启动 $ systemctl start docker 2.查看docker版本 $ docker version 3.查看安装的docker信息描述 ...

  4. ubuntu16.04下编译安装vim8.1

    之前写过一篇centos7下编译安装vim8.0的教程,ubuntu16.04相比centos7下安装过程不同在于依赖包名字的不同,其余都是一样.下面给出ubuntu16.04编译安装vim8.0需要 ...

  5. 用jQuery做一个选项卡

    1.首先我们点击选项卡的标题栏来改变内容

  6. Java开发笔记(八十八)文件字节I/O流

    前面介绍了如何使用字符流读写文件,并指出字符流工具的处理局限,进而给出随机文件工具加以改进.随机文件工具除了支持访问文件内部的任意位置,更关键的一点是通过字节数组读写文件数据,采取字节方式比起字符方式 ...

  7. Java开发笔记(八十三)利用注解技术检查空指针

    注解属于比较高级的Java开发技术,前面介绍的内置注解专用于编译器检查代码,另外一些注解则由各大框架定义与调用,像Web开发常见的Spring框架.Mybatis框架,Android开发常见的Butt ...

  8. 2015年第六届蓝桥杯javaB组 试题 答案 解析

    1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. ##### 答案 : 28   ### 2.立方 ...

  9. SpringBoot 动态更新 resources 目录的文件

    一.前言  SpringBoot 打成 Jar 包形式运行后 ,resources 目录下文件的读取修改和原来不太一样,网上比较多的是关于读取的方式,修改的几乎没有,终于在 stackoverflow ...

  10. Spring注解IOC/DI(4)

    2019-03-08/11:10:17 演示:使用注解的方式完成注入对象中的效果 注解参考链接:https://www.cnblogs.com/szlbm/p/5512931.html Spring中 ...