找回密码
 立即注册
查看: 120|回复: 1

STC32G12K128 ADC8采集外部电压

[复制链接]
已绑定手机

5

主题

4

回帖

61

积分

注册会员

积分
61
发表于 2026-9-16 10:15:31 | 显示全部楼层 |阅读模式
参考电压为芯片供电电压5v,采集到的最大数值1920,而且还周期性变化1920 960 480 240 120 60  0



void Adc8Init(void)
{
        P0M0 = 0x00; //设置 P0.0 为高阻  ADC 口
        P0M1 = 0x01;
            P0IE &= ~0x01; //关闭数字输入

        ADC_CONTR |= 0x08;
        ADCTIM = 0x3f; //设置 ADC 内部时序
        ADCCFG = 0x2f; //设置 ADC 时钟为系统时钟/2/16/16
        ADC_POWER =1; //使能 ADC 模块
        EADC = 1; //使能 ADC 中断
        EA = 1;
        ADC_START = 1; //启动 AD 转换   

   
}
void ADC_Isr() interrupt 5
{
        ADC_FLAG = 0; //清中断标志
        adc_dat = ADC_RES<<8 + ADC_RESL; //读取 ADC 结果
        ADC_START = 1; //继续 AD 转换
}

回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-9-16 10:27:15 | 显示全部楼层
adc_dat = ADC_RES<<8 + ADC_RESL; //读取 ADC 结果
这句没有对齐,也没有考虑优先级。
改写如下:
adc_dat = ((u16)ADC_RES<<8) + ADC_RESL; //读取 ADC 结果

另外,ADC中断里再启动转换,速度回比较快,如果使用串口返回数据,注意要来得及。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-8 01:08 , Processed in 0.063622 second(s), 45 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表