[应用相关] 进行ADC转换,就是不成功

[复制链接]
735|19
 楼主| renyaq 发表于 2019-11-21 19:19 | 显示全部楼层 |阅读模式
使用stm324F149
想进行ADC转换,就是不成功。
请大家帮忙看看问题出在哪里。

/****************************************************************************************
函数名称: ADC12_Init(void)
功    能: ADC12 初始化
参    数: 无
返回值  : 无
****************************************************************************************/
void ADC12_Init(void)
{
P6SEL |= 0x01;   // 选择P6.0作为 ADC
P6DIR &= ~BIT0;  // 设置P6.0为输入

ADC12CTL0 &= ~ENC;                                        // 配置ADC寄存器 必须将ENC清零

ADC12CTL0 |= ADC12ON+SHT0_8+MSC;          // 打开ADC
                                                                            // 采样保持时间为 256 * ADC12CLK
                                                                            // 多次采样转换
ADC12CTL0 |= REFON + REF2_5V;                    // 打开参考电压发生器
                                                                            // 使用2.5V参考电压
ADC12CTL1 |= SHP+CONSEQ_2;                       // ADC12SC 启动 - SHSx = 00
                                                                            // 脉冲采样模式 SHP = 1
                                                                            // ADC12DIV = 000  /1
                                                                            // ADC12SSLx = 00 内部时钟
                                                                            // CONSEQx = 10 单通道多次转换
ADC12MCTL0 |= SREF_1;                                   // SREF0 = 001 - VR+ = VREF+/VR-=AVss
                                                                            // INCH = 0000 - A0
ADC12CTL0 |= ENC;                                           // 使能ADC12
}
/****************************************************************************************
函数名称: ADC12_Convert(void)
功    能: ADC12 启动函数
参    数: 无
返回值  : 无
说明    :
****************************************************************************************/
unsigned int ADC12_Convert(void)
{
unsigned char i;
unsigned int temp;
unsigned long int adc_temp;


for ( i = 0; i < Num_of_Results; i++)
    {
  ADC12CTL0 |=  ADC12SC;      // ADC12SC 启动模式
  while ((ADC12IFG & BIT0) == 0);    // 等待ADC 完成
  temp = ADC12MEM0;
  adc_temp += temp;
    }
adc_temp >>= 4;      // 求平均值
temp=adc_temp;

return temp;
}
使用特权 更多操作
chenjunt 发表于 2019-11-21 19:22 | 显示全部楼层
发送的值固定,不随输入电压的变化而变化。
yklstudent 发表于 2019-11-21 19:25 来自手机 | 显示全部楼层
就佩服**玩寄存器操作的
morrisk 发表于 2019-11-21 19:25 | 显示全部楼层
转换后把ADC中断标志清零
chuxh 发表于 2019-11-21 19:30 | 显示全部楼层
是休眠后ADC中断没有触发吗
yinxiangh 发表于 2019-11-21 19:35 | 显示全部楼层

这个有什么问题呢?硬件问题?
houcs 发表于 2019-11-21 19:39 | 显示全部楼层
ADC转换的寄存器有问题吗
pangb 发表于 2019-11-21 19:42 | 显示全部楼层
IO是否进行了初始化呢?
ousj 发表于 2019-11-21 19:44 | 显示全部楼层

例程和你的板子是匹配的?
morrisk 发表于 2019-11-21 19:48 | 显示全部楼层
能够读取ADC的数值吗?
yinxiangh 发表于 2019-11-21 19:52 | 显示全部楼层
是不是单次转换?还是硬件问题?
yszong 发表于 2019-11-21 19:57 | 显示全部楼层

这个能够读取ADC的数值吗?
dengdc 发表于 2019-11-21 20:02 | 显示全部楼层

去用HAL吧,强势推进。
yszong 发表于 2019-11-21 20:06 | 显示全部楼层

为什么不用库里的宏定义,而是自己搞一套
dengdc 发表于 2019-11-21 20:09 | 显示全部楼层

“使用stm324F149 ”
STM32F1系列没有F149。
楼主的CPU到底是MSP430F149还是STM32系列?
wuhany 发表于 2019-11-21 20:12 | 显示全部楼层
怎么不成功?有什么体现?
jiahy 发表于 2019-11-21 20:15 | 显示全部楼层
ADC模块相关参数配置正确外,相关IO口的配置及时钟的配置也要正确。
yszong 发表于 2019-11-21 20:18 | 显示全部楼层
你用寄存器也无妨,可以参照下库代码的配置流程。
lizye 发表于 2019-11-21 20:22 | 显示全部楼层

你下载这个系列的cubeF4,里面BSP有HAL库的例子,可以用。
晓伍 发表于 2019-12-10 14:49 | 显示全部楼层
读取的寄存器跟通道对应吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部