我是靠谱客的博主 火星上大山,最近开发中收集的这篇文章主要介绍TI CC2530 学习笔记-15-NewBit-CC2530-ADC-外部电压周期性采集,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
TI CC2530 学习笔记-目录
功能:使用CC2530对外部电压周期性(5s)的采集,当电压值发生变化时输出当时电压。这里的外部电压是由Newbit-ZDK的TPHP底板上的电位器提供。按下S0也可以强制进行一次采样并将结果由串口发送出来。
- 初始化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; //开总中断
- 循环检测按键和电压
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 基础例程
最后
以上就是火星上大山为你收集整理的TI CC2530 学习笔记-15-NewBit-CC2530-ADC-外部电压周期性采集的全部内容,希望文章能够帮你解决TI CC2530 学习笔记-15-NewBit-CC2530-ADC-外部电压周期性采集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复