#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. SDK测试实践

    最近开始接SDK的测试项目,因为之前没有接触过,还是很新奇的,记录一下测试方法. 大家都知道SDK其实就是一个基础工具包,我的理解,对于安卓和IOS来说,SDK就是一个应用程序的基础包,在SDK的基础 ...

  2. 《Unity3D/2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  3. Virtual Box虚拟机Ubuntu18.X系统安装及Mysql基本开发配置

    Linux简介 什么是 Linux? Linux:世界上不仅只有一个 Windows 操作系统,还有 Linux.mac.Unix 等操作系统.桌面操作系统下 Windows 是霸主,而 Linux ...

  4. 记一个 DataBindings遇到的坑,当ComboBox同时绑定DataSource与DataBindings的时候,绑定的元素一定要同名

    下面的两个member1 一定要一样才行,不然会导致绑定异常 comboBox1.DisplayMember = "member1"; comboBox1.DataBindings ...

  5. Maven-常用插件

    罗列笔者认为比较有用的一些maven打包插件,方便后续查阅 spring-boot-maven-plugin springboot自带的maven插件,可用于简单的JAR/WAR方式打包,官方地址为h ...

  6. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

    前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...

  7. C# 把字符串类型日期转换为日期类型(转载)

    C# 把字符串类型日期转换为日期类型   来源:https://www.cnblogs.com/raincedar/p/7009243.html 方法一:Convert.ToDateTime(stri ...

  8. vue学习记录③(路由)

    上篇文章我们用vue-cli脚手架工具做了个简单的hello world页面,但是我们破坏了原来的流程,而正常的访问页面应该是通过路由来实现的. 那么什么是路由呢? 路由就是通过不同的url来访问不同 ...

  9. BASE64编码的图片在网页中的显示问题的解决

    BASE64位转码有两种: 一种是图片转为Base64编码,这种编码是直接可以在页面通过<img src='base64编码'/>的方式显示 Base64 在CSS中的使用 .demoIm ...

  10. SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...