6707|7

384

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

TIVA C 使用心得之四:ADC [复制链接]

#include
#include
#include
#include
#include
#include
#include
#include
#include "inc/tm4c123gh6pm.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/timer.h"
#include "driverlib/uart.h"
#include "driverlib/adc.h"


//#define PART_TM4C123GH6PM

#define        LED_RED        GPIO_PIN_1
#define        LED_BLUE    GPIO_PIN_2
#define        LED_GREEN    GPIO_PIN_3


void Uart0SendString(unsigned char *pch);
void UartXPrintf(int UartX, char *fmt,...);


int main(void)
{
    uint8_t ui8LED = 2;
    uint32_t ui32Period;
    char uchUart0Buf[50] = {0};
    uint32_t ui32SysClock;
    uint32_t ui32SysClockPerSec;

    uint32_t ui32ADC0Value[4];
    volatile uint32_t ui32TempAvg;
    volatile uint32_t ui32TempValueC;
    volatile uint32_t ui32TempValueF;

    uint32_t ui32ADC0TempValue;

    SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    ui32SysClock = SysCtlClockGet();
    ui32SysClockPerSec = ui32SysClock / 3;
    SysCtlDelay(ui32SysClockPerSec);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
    GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
    TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);

    ui32Period = (SysCtlClockGet() / 1) * 2;
    TimerLoadSet(TIMER0_BASE, TIMER_A, ui32Period -1);

    IntEnable(INT_TIMER0A);
    TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
    IntMasterEnable();

    TimerEnable(TIMER0_BASE, TIMER_A);

    GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0);

    //UART0
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    //有问题  前面说过解决方法
    //GPIOPinConfigure(GPIO_PA0_U0RX);
    //GPIOPinConfigure(GPIO_PA1_U0TX);


    GPIOPinConfigure(0x00000001);//GPIO_PA0_U0RX
    GPIOPinConfigure(0x00000401);//GPIO_PA1_U0TX

    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
                (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

    Uart0SendString("Hello");

    //ADC
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);

    ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
    ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH0);
    ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH0);
    ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_CH0);
    ADCSequenceStepConfigure(ADC0_BASE,1,3,ADC_CTL_CH0|ADC_CTL_IE|ADC_CTL_END);
    ADCSequenceEnable(ADC0_BASE, 1);

    while(1)
    {
        ADCIntClear(ADC0_BASE, 1);
        ADCProcessorTrigger(ADC0_BASE, 1);

        while(!ADCIntStatus(ADC0_BASE, 1, false))
        {
        }

        ADCSequenceDataGet(ADC0_BASE, 1, ui32ADC0Value);
        ui32ADC0TempValue = (ui32ADC0Value[0] + ui32ADC0Value[1] + ui32ADC0Value[2] + ui32ADC0Value[3] + 2)/4;
        Uart0SendString("ADC0=");
        UARTCharPut(UART0_BASE, ui32ADC0TempValue/10000+'0');
        UARTCharPut(UART0_BASE, ui32ADC0TempValue%10000/1000+'0');
        UARTCharPut(UART0_BASE, ui32ADC0TempValue%1000/100+'0');
        UARTCharPut(UART0_BASE, ui32ADC0TempValue%100/10+'0');
        UARTCharPut(UART0_BASE, ui32ADC0TempValue%10+'0');
        Uart0SendString("\r\n");
        SysCtlDelay(ui32SysClockPerSec);
    }
}

[ 本帖最后由 upc_arm 于 2013-12-5 00:15 编辑 ]

最新回复

想问一下楼主,如何用ADC模块测量外界电压值并且显示出来呢??  详情 回复 发表于 2018-10-13 13:04
 
点赞 关注(3)

回复
举报

18

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
过来看看
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
学习了。。。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

4
 
你想实现的是什么功能为什么不说说 看不懂哦
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
好人
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼主 程序最后把数据输出到Uart   要是我想输出txt格式文件用于其他软件分析  该怎么办呢?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

7
 
还有M4 ADC采样的程序或者经验分享没,新手求辅导呦
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

8
 
想问一下楼主,如何用ADC模块测量外界电压值并且显示出来呢??
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表