1.头文件

#include "tiva_adc.h"                // ADC

2.引脚

3.初始化

// ADC初始化
// 光敏电阻(PE0)为通道3,存在序列0中,硬件平均为8个点
adc_init(TIVA_ADC1 , Channel_3, Sequence0, GPIOE, Pin0, );

// 滑动变阻器为通道2
  adc_init(TIVA_ADC1 , Channel_2, Sequence1, GPIOE, Pin1, 8);

//具体函数内容
//channel:0-11
//sequence:0-3
void adc_init(uint32_t adc, uint32_t channel, uint32_t sequence, uint32_t GPIO, uint32_t PIN,
int average_num)
{
//参数转换
uint32_t adc_base;
uint32_t adc_gpio;
//选择ADC0或ADC1
if(adc == TIVA_ADC0)
adc_base = ADC0_BASE;
else if(adc == TIVA_ADC1)
adc_base = ADC1_BASE; //选择GPIO
switch(GPIO)
{
case GPIOA:{adc_gpio = SYSCTL_PERIPH_GPIOA;break;}
case GPIOB:{adc_gpio = SYSCTL_PERIPH_GPIOB;break;}
case GPIOC:{adc_gpio = SYSCTL_PERIPH_GPIOC;break;}
case GPIOD:{adc_gpio = SYSCTL_PERIPH_GPIOD;break;}
case GPIOE:{adc_gpio = SYSCTL_PERIPH_GPIOE;break;}
case GPIOF:{adc_gpio = SYSCTL_PERIPH_GPIOF;break;}
}
SysCtlPeripheralEnable(adc); // 开ADC0/ADC1
GPIOPinTypeADC(GPIO, PIN); // 选择管脚
// 开启ADC
// adc:ADC0 或 ADC1
// sequence: 选择序列
// 最后一个参数:优先级
ADCSequenceConfigure(adc_base, sequence, ADC_TRIGGER_PROCESSOR, ); ADCHardwareOversampleConfigure(adc_base, average_num); // 设置硬件8个数取一次均值 ADCSequenceStepConfigure(adc_base, sequence, , channel | ADC_CTL_IE | ADC_CTL_END); // 使能ADCx sequencex 中断
if(adc == TIVA_ADC0)
ADCIntRegister(adc_base, sequence, ADC0Handler);
else
ADCIntRegister(adc_base, sequence, ADC1Handler); ADCIntEnable(adc_base, sequence);
if(adc == TIVA_ADC0) // ADC0
{
switch(sequence)
{
case :IntEnable(INT_ADC0SS0);break;
case :IntEnable(INT_ADC0SS1);break;
case :IntEnable(INT_ADC0SS2);break;
case :IntEnable(INT_ADC0SS3);break;
}
}
else // ADC1
{
switch(sequence)
{
case :IntEnable(INT_ADC1SS0);break;
case :IntEnable(INT_ADC1SS1);break;
case :IntEnable(INT_ADC1SS2);break;
case :IntEnable(INT_ADC1SS3);break;
}
}
ADCSequenceEnable(adc_base, sequence); // 通道配置好之后进行只能
ADCIntClear(adc_base, sequence); // 清除中断标志
}

4.获取采样值

// 获取采样值,0-4095,对应0-3.3V
adc_val = adc_get_value(TIVA_ADC1, Sequence0)*3.3/4096; // 具体函数内容 uint16_t adc_get_value(uint32_t adc, uint8_t sequence)
{
if(adc == TIVA_ADC0) // ADC0
{
ADCProcessorTrigger(ADC0_BASE, sequence);
switch(sequence)
{
case Sequence0: return ADC0_sequence0_value;
case Sequence1: return ADC0_sequence1_value;
case Sequence2: return ADC0_sequence2_value;
case Sequence3: return ADC0_sequence3_value;
default: return ;
}
}
else // ADC1
{
ADCProcessorTrigger(ADC1_BASE, sequence);
switch(sequence)
{
case Sequence0: return ADC1_sequence0_value;
case Sequence1: return ADC1_sequence1_value;
case Sequence2: return ADC1_sequence2_value;
case Sequence3: return ADC1_sequence3_value;
default: return ;
}
}
}

单片机TM4C123学习(十):ADC采样模块的更多相关文章

  1. 单片机TM4C123学习(七):I2C模块(温度传感器)

    I2C(Inter Intergrated Circuit)总线是Philips公司推出的一种用于IC器件之间连接的二线制串行扩展总线,它通过两根信号线(SDA-串行数据线:SCL-串行时钟线)在连接 ...

  2. 单片机TM4C123学习(九):PWM

    1.头文件与变量定义 #include "tiva_pwm.h" // PWM 2.初始化 // PWM 初始化,频率为1000,占空比为0 M1PWM7_init(, ); // ...

  3. 单片机TM4C123学习(八):SPI接口D/A

    1.头文件和变量定义(不是很清楚) #include "driverlib/ssi.h" #include "driverlib/i2c.h" #include ...

  4. DSP基础学习-ADC采样

    DSP基础学习-ADC采样 彭会锋 2015-04-27 22:30:03 在查看ADC采样例程的时候我发现了下面的代码挺有意思的 EALLOW; GpioCtrlRegs.GPAMUX2.bit.G ...

  5. STM32中基于DMA的ADC采样实例之MQ-2烟雾传感器

    最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气 ...

  6. 智能车学习(十五)——K60野火2013版例程

    一.中断函数注册方法: 1.格式: 配置某个功能的中断 注册中断函数 开启中断 2.一个例子 pit_init_ms(PIT0,);//定时中断初始化 set_vector_handler(PIT0_ ...

  7. 使用STM8SF103 ADC采样电压(转)

    源:使用STM8SF103 ADC采样电压 硬件环境: STM8SF103 TSSOP20封装 因为项目需要用到AD采样电池电压,于是便开始了使用STM8S ADC进行采样,也就有了下文. 手册上对S ...

  8. 强化学习(十六) 深度确定性策略梯度(DDPG)

    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...

  9. 强化学习(十五) A3C

    在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...

随机推荐

  1. 【C】 01 - 再学C语言

    “C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...

  2. Redis入门(一)系统安装

    硬件环境:Thinkpad T450,Intel i5-5200U CPU @ 2.20GHz × 4 ,8GB RAM 软件环境: ubuntu 14.04.4 (trusty) 一.软件安装 #w ...

  3. fiddler抓取手机数据包

    百度经验:http://jingyan.baidu.com/article/d8072ac4605905ec95cefda0.html

  4. S7-1200 与 S7-200 的对比PPT

  5. Velocity $ 和$! 区别

    输出指令 ${}过滤输出 输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签. 格式: ${expression} 示例: ${user.name} 注:HTTL缺省开启了EscapeX ...

  6. flask 添加日志

    def add_error_handler(app): for exception in default_exceptions: app.register_error_handler(exceptio ...

  7. xcode 打静态库.a文件

    原文地址:http://blog.csdn.net/pjk1129/article/details/7255163 核心命令:lipo -info 地址.查看支持的类型,如armv7 lipo -cr ...

  8. jquery.easypiechart.js简介

    此插件主要是用来统计新的访问.跳出率.服务器负载.使用的RAM等,功能很强大,带有HTML5的动画效果,效果非常炫,看效果吧easyPieChart一款新型的EASY饼图数据统计Jquery插件截图: ...

  9. SQLite事务管理

    事务管理对数据库一致性是至关重要的.数据库实现ACID属性以确保一致性.SQLite依赖于本地文件锁和页日志来实现ACID属性.SQLite只支持扁平事务,并不支持事务嵌套和保存点能力. 1.1 事务 ...

  10. com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

      问题描述:最简单的数据库连接报错,到主机  的 TCP/IP 连接失败.(win 7 操作系统) 错误信息: com.microsoft.sqlserver.jdbc.SQLServerExcep ...