TI CC2530 学习笔记-15-NewBit-CC2530-ADC-外部电压周期性采集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21352095/article/details/83047069

TI CC2530 学习笔记-目录

功能:使用CC2530对外部电压周期性(5s)的采集,当电压值发生变化时输出当时电压。这里的外部电压是由Newbit-ZDK的TPHP底板上的电位器提供。按下S0也可以强制进行一次采样并将结果由串口发送出来。

  1. 初始化ADC,串口,定时器3
    halMcuWaitUs(10000);  //等待时间稳定,约10ms
  CLKCONCMD &= ~0x47;   //选择外部32MHZ时钟, 不分频
                        //TICKSPD不改变,保持为0x01,即定时器标记频率为16MHz
  while( (CLKCONSTA & 0x47) != 0x00 ); //切换时钟源后再次等待稳定
  
  P0DIR |= 0x80;    //配置IO为输出
  
  /* 初始化串口 */
  P0SEL |= 0x0C; //将P02,P03设为外设功能
  PERCFG &= ~0x01;   //串口0占用P02 P03
  U0CSR = 0X80;    //USART模式设为UART模式
  U0UCR = 0x00;    //禁用流控,禁用奇偶检验,1位停止位
  U0GCR   |= 8;     //9600
  U0BAUD  =  59;
  
  /* 初始化ADC采样端口,P06 */
  APCFG |= 0x40;
  
  LED_G_IO = LED_G_ACTIVE;
  
    /* 初始化定时器3 */
  T3CTL = 0xE2;   //128分频(0.125Mhz),模模式
  T3CCTL0 = 0x04; //比较模式
  T3CC0 = 125;    //溢出值
  T3CTL |= 0x08;  //打开溢出中断
  T3CCTL0 |= 0x40;//开T3通道0中断
  T3IE = 1;        //定时器3中断使能
  T3CTL |= 0x10;  //启动定时器
  IEN0 |= 0X80;   //开总中断
  1. 循环检测按键和电压
  while(1)
  {
    /* 按下K2可触发一次采样 */
    if (KV_1 == halScanKey())
    {
      adcResult = halAdcSampleSingle(HAL_ADC_REF_AVDD, 0x06);//P06
      culPrintVoltage(adcResult);
      
      while( KV_1 == halScanKey());
    }
    
    /* 反复采样,发现电压变化时将新的电压送出 */
    /* 可以分辨的电压变化是0.007V */
    /* 当采样结果小于RESOLUTION 会连续输出 */
    if(gSample){
      
      gSample = 0;
      adcResult = halAdcSampleSingle(HAL_ADC_REF_AVDD, 0x06);
      if ((adcResult < (adcLast - RESOLUTION))
        || (adcResult > (adcLast + RESOLUTION)))
      {
        adcLast = adcResult;
        culPrintVoltage(adcResult);
      }
    }
  }

代码:NewBit-ZDK CC2530 基础例程

猜你喜欢

转载自blog.csdn.net/qq_21352095/article/details/83047069