单片机TM4C123学习(十):ADC采样模块
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采样模块的更多相关文章
- 单片机TM4C123学习(七):I2C模块(温度传感器)
I2C(Inter Intergrated Circuit)总线是Philips公司推出的一种用于IC器件之间连接的二线制串行扩展总线,它通过两根信号线(SDA-串行数据线:SCL-串行时钟线)在连接 ...
- 单片机TM4C123学习(九):PWM
1.头文件与变量定义 #include "tiva_pwm.h" // PWM 2.初始化 // PWM 初始化,频率为1000,占空比为0 M1PWM7_init(, ); // ...
- 单片机TM4C123学习(八):SPI接口D/A
1.头文件和变量定义(不是很清楚) #include "driverlib/ssi.h" #include "driverlib/i2c.h" #include ...
- DSP基础学习-ADC采样
DSP基础学习-ADC采样 彭会锋 2015-04-27 22:30:03 在查看ADC采样例程的时候我发现了下面的代码挺有意思的 EALLOW; GpioCtrlRegs.GPAMUX2.bit.G ...
- STM32中基于DMA的ADC采样实例之MQ-2烟雾传感器
最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气 ...
- 智能车学习(十五)——K60野火2013版例程
一.中断函数注册方法: 1.格式: 配置某个功能的中断 注册中断函数 开启中断 2.一个例子 pit_init_ms(PIT0,);//定时中断初始化 set_vector_handler(PIT0_ ...
- 使用STM8SF103 ADC采样电压(转)
源:使用STM8SF103 ADC采样电压 硬件环境: STM8SF103 TSSOP20封装 因为项目需要用到AD采样电池电压,于是便开始了使用STM8S ADC进行采样,也就有了下文. 手册上对S ...
- 强化学习(十六) 深度确定性策略梯度(DDPG)
在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...
- 强化学习(十五) A3C
在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...
随机推荐
- FCKeditor 2.6.4.1 初始化值不能显示中文问题
最近在学习PHP加入FCKeditor 在线编辑器,发现在初始化Value赋值时,英文可以显示出来,中文怎么都显示不出来,连乱码都不显示. 经过漫长的探索,终于找到原因了! 在fckeditor目录下 ...
- Codeforces Round #378 (Div. 2) D - Kostya the Sculptor
Kostya the Sculptor 这次cf打的又是心累啊,果然我太菜,真的该认真学习,不要随便的浪费时间啦 [题目链接]Kostya the Sculptor &题意: 给你n个长方体, ...
- 详细安装ss的过程(vultr)
#更新程序yum update -y #安装setuptoolsyum install -y python-setuptools #安装pipeasy_install pip #安装shadowsoc ...
- ORA-00245: control file backup failed; target is likely on a local file system
ORACLE11G RAC alert报错如下:Errors in file /u01/app/oracle/diag/rdbms/dljyzs/dljyzs1/trace/dljyzs1_ora_8 ...
- 创建线程方式-GCD
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 安卓处理原始XML文件
// 获取XML文档(Parser:剖析器) XmlResourceParser parser = getResources().getXml(R.xml.person); try { // 文档未完 ...
- bootloader制作过程
主机环境:Ubuntu10.04.4 LTS 使用工具:buildroot-201208 目 标 板:S3C2410 --------------------------------------- ...
- c#版在pc端发起微信扫码支付
等了好久,微信官方终于发布了.net的demo. 主要代码: /** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式 ...
- CAS 与.net 集成的 “循环重定向”问题分析
转自:http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html 近期的一个项目,项目包含了若干的子系统,因为人员配备的原因,项目会 ...
- C++学习基础四——顺序容器和关联容器
—顺序容器:vector,list,queue1.顺序容器的常见用法: #include <vector> #include <list> #include <queue ...