STM32的标准库函数中Get_Adc(u8 ch)卡死的现象

直接贴代码:

//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的软件转换启动功能	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1规则组的转换结果
}

某些条件下会卡死在ADC_GetConversionValue(ADC1)中,不得其解
后修改为直接操作寄存器的形式:

//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{  
	ADC1->CR2 |= CR2_EXTTRIG_SWSTART_Set;
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

	return (uint16_t) ADC1->DR;//ADC_GetConversionValue(ADC1);	//返回最近一次ADC1规则组的转换结果
}

没有再出现卡死的问题,原因不得而知,在此记录一下,后续经验是:感觉现象百试不对的话,试一下抛弃封装好的库函数,直接操作寄存器看现象。。。。。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值