初级会员

- 积分
- 104
- 金钱
- 104
- 注册时间
- 2020-8-13
- 在线时间
- 20 小时
|
5金钱
如图 now的值是在第二个if 判断中的判断出来的flag却不对
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "adc.h"
- #include "DMA.h"
- #include "stdlib.h"
- #include "math.h"
- #include "timer.h"
- #include "led.h"
- u16 now=0;
- u8 flag=0;
- int main(void)
- {
- int i = 0;
- u16 previous;
-
- delay_init(); //Ñóê±oˉêy3õê¼»ˉ
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏ輶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏ輶£¬2λÏìó|óÅÏ輶
- Adc_Init(); //ADCoíDMA3õê¼»ˉ
- delay_ms(20);
- // TIM3_Int_Init(4999,7199);//10KhzμļÆêyÆμÂ꣬¼Æêyμ½5000Îa500ms
- LED_Init(); //LED¶Ë¿ú3õê¼»ˉ
- while(1)
- {
- now = ReadADCAverageValue(0);
- if(0x3E8>now)
- {flag = 1;}
- else if(0x7D0>now>=0x3E8)
- {flag = 2;}
- else if(4096>now>=2000)
- {
- flag = 3;
- }
-
- if(flag==1)
- {
- LED_YELLOW = 0;
- LED_BLUE = 1;
- }
- if(flag==2)
- {
- LED_YELLOW = 1;
- LED_BLUE = 0;
- }
- if(flag==3)
- {
- LED_YELLOW = 0;
- LED_BLUE = 0;
- }
复制代码- #include "adc.h"
- #include "delay.h"
- #include "DMA.h"
- /*****í¨μà¶Ôó|1ØÏμ£oCH0--PA0£¬CH1--PA1£¬CH2--PA2£¬CH3--PA3£¬CH4--PA4£¬CH5--PA5£¬CH6--PA6£¬CH7--PA7£¬CH8--PA8£¬CH9--PA9****/
- __IO u16 ADC_ConvertedValue[Sample_Num][Channel_Num]; //¶tάêy×飬óÃà′′æ·ÅADC×a»»½á1û£¬ò2êÇDMAμÄÄ¿±êμØÖ·
- u16 judge_ADC_Value[2];
- void Adc_Init(void)
- {
- ADC_InitTypeDef ADC_InitStructure;
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1, ENABLE ); //ê1ÄüGPIOA,GPIOBoíADC1í¨μàê±Öó
-
- RCC_ADCCLKConfig(RCC_PCLK2_Div6); //éèÖÃADC·ÖÆμòò×ó6 72M/6=12,ADC×î′óê±¼ä2»Äü3¬1y14M
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PA0-PA7 ×÷ÎaÄ£Äaí¨μàêäèëòy½Å
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //Ä£Äaêäèëòy½Å
- GPIO_Init(GPIOA, &GPIO_InitStructure); //3õê¼»ˉGPIOA
-
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //PB0-PB1 ×÷ÎaÄ£Äaí¨μàêäèëòy½Å
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //Ä£Äaêäèëòy½Å
- // GPIO_Init(GPIOB, &GPIO_InitStructure); //3õê¼»ˉGPIOB
-
-
- MYDMA_Config(); //DMA13õê¼»ˉ
-
- ADC_DeInit(ADC1); //¸′λADC1
-
- ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1¤×÷Ä£ê½:ADC1oíADC21¤×÷Ôú¶àá¢Ä£ê½
- ADC_InitStructure.ADC_ScanConvMode = ENABLE; //Ä£êy×a»»1¤×÷Ôúé¨ÃèÄ£ê½
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //Ä£êy×a»»1¤×÷Ôúá¬Dø×a»»Ä£ê½
- ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //×a»»óéèí¼t¶ø2»êÇía2¿′¥·¢Æô¶ˉ
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADCêy¾Yóò¶ÔÆë
- ADC_InitStructure.ADC_NbrOfChannel =Channel_Num; //Ë3Dò½øDD1æÔò×a»»μÄADCí¨μàμÄêyÄ¿
- ADC_Init(ADC1, &ADC_InitStructure); //¸ù¾YADC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèADCxμļÄ′æÆ÷
-
-
- ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC í¨μà x,1æÔò2éÑùË3DòÖμÎa y,2éÑùê±¼äÎa 239.5 ÖüÆú£¬ÏÂí¬
- // ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );
- // ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 5, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 6, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 7, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 8, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 9, ADC_SampleTime_239Cycles5 );
- //ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 10, ADC_SampleTime_239Cycles5 );
-
-
- ADC_DMACmd(ADC1, ENABLE); //¿aÆôADCμÄDMAÖ§3Ö
-
- ADC_Cmd(ADC1, ENABLE); //ê1ÄüÖ¸¶¨μÄADC1
-
-
- ADC_ResetCalibration(ADC1); //ê1Äü¸′λD£×¼
-
- while(ADC_GetResetCalibrationStatus(ADC1)); //μè′y¸′λD£×¼½áêø
-
- ADC_StartCalibration(ADC1); //¿aÆôADD£×¼
-
- while(ADC_GetCalibrationStatus(ADC1)); //μè′yD£×¼½áêø
-
- ADC_SoftwareStartConvCmd(ADC1, ENABLE); //ê1ÄüÖ¸¶¨μÄADC1μÄèí¼t×a»»Æô¶ˉ1|Äü
- }
- u16 ReadADCAverageValue(u8 Channel) //ÿ¸öí¨μàμÄêy¾Yè¡Ñù10′Σ¬ÇóμÃƽ¾ùÖμ
- {
- u8 i;
- u32 sum=0;
- for(i=0; i<Sample_Num; i++)
- {
- sum+=ADC_ConvertedValue[i][Channel];
- }
- return (sum/Sample_Num);
- }
复制代码
|
最佳答案
查看完整内容[请看2#楼]
if(a>b>c)建议不要这样写,它可能是这样算的:先算a>b这个式子会得到一个值,然后这个值去和c比较。
建议写成这样:
if((a>b)&&(b>c))
https://zhidao.baidu.com/question/239119836.html
|