|
STM8S001J3同时两路ADC采集,PC4的AIN2和PD6的AIN6,同样的配置方式,PD6数据正常,PC4的数据一直不变,单通道采集PC4数据也是不变化,下面贴上PD6和PC4的配置方式代码: void ADC1_Config(void) { /* 初始化 ADC1 通道6的IO口 */ GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT); GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT); ADC1_PrescalerConfig(ADC1_PRESSEL_FCPU_D2);//预分频2 ADC1_ExternalTriggerConfig(ADC1_EXTTRIG_TIM,DISABLE);//不使用外部触发 ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL2,DISABLE); ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL6,DISABLE); //禁止AIN2 AIN4的施密特触发器,降低IO静态功耗 //PD5,PD6上的通道如果施密特方式禁用会导致串口无法收发数据! ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE,//单次转换 ADC1_CHANNEL_6,//配置通道号最大的那个 ADC1_ALIGN_RIGHT);//右对齐 ADC1_Cmd(ENABLE);//开启ADC ADC1_ScanModeCmd(ENABLE);//开启扫描模式 } 下面是主函数代码: while (1) { //ans = getchar(); //读取输入的字符 // GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS); ADC1_StartConversion();//开启一次转换 while(!ADC1_GetFlagStatus(ADC1_FLAG_EOC));//等待转换完成 ADC1_ClearFlag(ADC1_FLAG_EOC);//软件清除 Conversion_Value2=(u16)ADC1_GetBufferValue(ADC1_SCHMITTTRIG_CHANNEL2);//读取AIN2的值 Conversion_Value6=(u16)ADC1_GetBufferValue(ADC1_SCHMITTTRIG_CHANNEL6);//读取AIN6的值 printf("%d", Conversion_Value2); //把输入的字符发送出去 Delay(100); printf("%d", Conversion_Value6); //把输入的字符发送出去 Delay(100); } 求高手解答!谢谢! |
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
微信公众号
手机版
参阅ST官方数据手册可知:PC4的ADC功能在AFR2,你必须在OPTION BYTE中配置PC4的AFR2功能。
同时:你的GPIO配置中:
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);
貌似应该2个通道都一致。
还有:如果你不是设置扫描方式,也应该对PC4的ADC进行配置。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分