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. api接口签名验证(MD5)

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  2. SpringMVC处理静态资源

    若将DispatcheServlet请求映射设置为/,则SpringMvc将捕获WEB容器的所有请求,包括静态资源的请求,SpringMvc会将它们当成一个普通的请求处理,那么将会出现因找不到对应的处 ...

  3. Hbase客户端API基础小结笔记(未完)

    客户端API:基础 HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无 ...

  4. UML精粹3 - 类图,序列图,CRC

    类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...

  5. oracle start with connect by prior 递归查询

    Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的, 其基本语法是: select ... f ...

  6. silverlight简单数据绑定3

    3种数据绑定模式  OneTime(一次绑定) OneWay(单项绑定) TwoWay(双向绑定) OneTime:仅在数据绑定创建时使用数据源更新目标. 列子: 第一步,创建数据源对象让Person ...

  7. Raising Modulo Numbers

    Description People are different. Some secretly read magazines full of interesting girls' pictures, ...

  8. 14. Reverse Linked List II

    Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass. F ...

  9. Django model中常见Field types , Field options

    AutoField :自增,数据库 BooleanField:布尔型 CharField:字符型 DateField:日期,datetime.date类的实例.有两个常用的option,auto_no ...

  10. 10G R2 参数文件相关

    CLUSTER_DATABASE Property Description Parameter type Boolean Default value false Modifiable No Range ...