STM32F104ZET6之ucosⅢ下adc
//5.配置ADC1
//resolution:分辨率,设置ADC的分辨率为12位
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
//单通道,多个通道就使能
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
//注意,这里没设置外部触发,但是也把值填上,有可能出问题
//比如:这一行注释掉,明明设置的数据右对齐,结果读出来,变成了左对齐
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
//不需要外部触发,ADC照样可以工作
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
//关闭连续转换模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
//输出结果右对齐存储
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
//告诉ADC有多少个通道需要转换,当前是1个通道
//branch:分支
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
在配置ADC的时候,由于不需要外部触发,将如下代码注释掉
//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
但是,注释掉后,明明设置的数据右对齐(ADC_DataAlign_Right),可结果却变成了左对齐:
将其去掉注释后,恢复正常(右对齐):
总结:
在初始化时,配置结构体,不需要的项,最好也写上值。