⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 将ad转换的结果先放在flash里面
💻 C
字号:
#include  "systemInit.h"
#include  "uartGetPut.h"
#include  <hw_flash.h>
#include  <flash.h>
#include  <stdio.h>
#include  <adc.h>


//  定义Flash扇区号(每个扇区1024字节)
#define  SECTION    62


//ADC的定义
#define  ADCSequEnable          ADCSequenceEnable
#define  ADCSequDisable         ADCSequenceDisable
#define  ADCSequConfig          ADCSequenceConfigure
#define  ADCSequStepConfig      ADCSequenceStepConfigure
#define  ADCSequDataGet         ADCSequenceDataGet

tBoolean ADC_EndFlag = false;                               //  定义ADC转换结束的标志

//  ADC初始化
void adcInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_ADC);                    //  使能ADC模块
    SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);             //  设置ADC采样速率
    ADCSequDisable(ADC_BASE, 0);                            //  配置前先禁止采样序列

    //  采样序列配置:ADC基址,采样序列编号,触发事件,采样优先级
    ADCSequConfig(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);

    //  采样步进设置:ADC基址,采样序列编号,步值,通道设置
    ADCSequStepConfig(ADC_BASE, 0, 0, ADC_CTL_CH0 |
                                      ADC_CTL_END |
                                      ADC_CTL_IE);

    ADCIntEnable(ADC_BASE, 0);                              //  使能ADC中断
    IntEnable(INT_ADC0);                                    //  使能ADC采样序列中断
    IntMasterEnable();                                      //  使能处理器中断

    ADCSequEnable(ADC_BASE, 0);                             //  使能采样序列
}


//  ADC采样
unsigned long adcSample(void)
{
    unsigned long ulValue;

    ADCProcessorTrigger(ADC_BASE, 0);                       //  处理器触发采样序列
    while (!ADC_EndFlag);                                   //  等待采样结束  采样结束后就执行下面的程序。
    ADC_EndFlag = false;                                    //  清除ADC采样结束标志
    ADCSequDataGet(ADC_BASE, 0, &ulValue);                  //  读取ADC转换结果

    return(ulValue);
}



//  Flash读取操作
char flashRead(unsigned long ulAddress)       //怎么好像只是一个数据的格式转换过程啊?、????????????????
{
    char *pcData;

    pcData = (char *)(ulAddress);

    return(*pcData);
}


//  主函数(程序入口)
int main(void)
{
    char cString[] = "Hello,world!\r\n";
    unsigned long *pulData;
    int i;
    char c;
    long size;
    unsigned long ulVal;
    char cBuf[30];

    jtagWait();                                             //  防止JTAG失效,重要!
 /* clockInit();                                            //  时钟初始化:晶振,6MHz     */
    clockInit();             //ADC采样需要的时钟:pll,20MHz
    uartInit();                                             //  UART初始化
    adcInit();
   
    FlashUsecSet(TheSysClock / 1000000);                    //  设置每微秒的CPU时钟数
 
    
    ulVal=adcSample();
    ulVal=(ulVal*3000)/1024;
    sprintf(cBuf,"ADC0=%ld(mV)\r\n",ulVal);                 //将一个格式化的字符串输出到一个目的字符串

    pulData = (unsigned long *)cBuf;                      //将数组的首地址赋给指针,然后再用来给Flash烧写。

   if (FlashErase(SECTION * 1024))                          //flash的擦除,擦除1KB的块。
    {
        uartPuts("<Erase error>\r\n");
        for (;;);
    }
  
   uartPuts("<Erase ok>\r\n");   
    
    size = 4 * (1 + sizeof(cBuf) / 4);                   //要烧写的字节数。

    if (FlashProgram(pulData, SECTION * 1024, size))        //Flash的编程,将数据写到FLASH里面,编程的起始地址是SECTION * 1024
                                                            //这里的pulData是指向数组缓冲区的指针。
    {    uartPuts("<Program error>\r\n");                    //烧写不成功会返回-1
        for (;;);
    }

   uartPuts("<Program ok>\r\n");
  
   
     for (i = 0; i < sizeof(cBuf); i++)                 //FLASH读取数据
    {
        c = flashRead(SECTION * 1024 + i);
        if (c != '\0')
          uartPutc(c);
        else
          break;
    }
   
     
    uartPuts("<Read ok>\r\n");

    for (;;)
    {
    }
}

//  ADC采样序列0的中断
void ADC_Sequence_0_ISR(void)
{
    unsigned long ulStatus;

    ulStatus = ADCIntStatus(ADC_BASE, 0, true);             //  读取中断状态
    ADCIntClear(ADC_BASE, 0);                               //  清除中断状态,重要

    if (ulStatus != 0)                                      //  如果中断状态有效
    {
        ADC_EndFlag = true;                                 //  置位ADC采样结束标志
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -