OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3391|回复: 2

用调试助手调有时有数据有时没有,循环一下就断了,麻烦大神看看

[复制链接]

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
发表于 2015-8-5 19:39:56 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "pbdata.h" #define N 50 //????50 ? #define M 4 //?12 ??? vu16 AD_Value[N][M]; //????ADC ????,??DMA ????? vu16 After_filter[M]; //????????????? int i,j,k,l; void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void USART_Configuration(void); void ADC_Configuration(void); void DMA_Configuration(void); //void init_All_Periph(void); //void SysTick_Initaize(void); int fputc(int ch,FILE *f) { USART_SendData(USART1,(u8)ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); return ch; } /*int main(void) { u32 ad=0; u8 i=0; RCC_Configuration(); //?????±???????? GPIO_Configuration();//?????????? USART_Configuration(); NVIC_Configuration(); ADC_Configuration(); while(1) { ad=0; for(i=0;i<50;i++) { ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)); ad=ad+ADC_GetConversionValue(ADC1); } ad=ad/50; printf("ad =%f\r\n",3.3/4095*ad);//?????????? //×??? delay_ms????????·??§??1-1863 //?ù??×??ó???±??1.8?? delay_ms(1000); delay_ms(1000); delay_ms(1000); } } */ void RCC_Configuration(void) { SystemInit();//72m RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6);//12M ×??ó14M } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; //LED GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOC,&GPIO_InitStructure); } void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate=115200; USART_InitStructure.USART_WordLength=USART_WordLength_8b; USART_InitStructure.USART_StopBits=USART_StopBits_1; USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_Init(USART1,&USART_InitStructure); USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_Cmd(USART1,ENABLE); USART_ClearFlag(USART1,USART_FLAG_TC); } void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode=ENABLE; ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel=M; ADC_Init(ADC1,&ADC_InitStructure); //ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_239Cycles5); //????ADC ??????,?????????????? //ADC1,ADC ??x,????????y,?????239.5 ?? ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 4, ADC_SampleTime_239Cycles5 ); ADC_TempSensorVrefintCmd(ENABLE); ADC_DMACmd(ADC1,ENABLE); ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1,ENABLE); } /*??DMA*/ void DMA_Configuration(void) { /* ADC1 DMA1 Channel Config */ DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel1); //?DMA ???1 ????????? DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value; //DMA ????? DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //???????????? DMA_InitStructure.DMA_BufferSize = N*M; //DMA ???DMA ????? DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //??????? DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //???????? DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //? DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //???? DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //????????? DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA ?? x ?????? DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA ??x ???????? DMA_Init(DMA1_Channel1, &DMA_InitStructure); //??DMA_InitStruct ?????? } /*??ADC ??,??????????*/ u16 GetVolt(u16 advalue) { return (u16)(advalue * 330 / 4096); //???????100 ?,???????? } /*??????*/ void filter(void) { int sum = 0; u8 count; i=k; //for(i=0;i<4;i++) //{ for ( count=0;count<N;count++) { sum += AD_Value[count]; } After_filter=sum/N; sum=0; } //} int main(void) { u16 value[M]; RCC_Configuration(); //?????±???????? GPIO_Configuration();//?????????? USART_Configuration(); DMA_Configuration(); NVIC_Configuration(); ADC_Configuration(); //init_All_Periph(); //SysTick_Initaize(); /* Start ADC1 Software Conversion */ //_adcResult = 0x0FFF; ADC_SoftwareStartConvCmd(ADC1, ENABLE); DMA_Cmd(DMA1_Channel1, ENABLE); //??DMA ?? while(1) { /*for(j=0; j<16; j++) { if (j==0) { printf("12V_AI_"); delay_ms(100);} else if (j==1) { GPIO_SetBits(GPIOA,GPIO_Pin_15); //AI0 printf("AI0_"); delay_ms(100);} else if (j==2) {GPIO_SetBits(GPIOC,GPIO_Pin_10);//AI1 printf("AI1_"); delay_ms(100); } else if (j==3) {GPIO_SetBits(GPIOC,GPIO_Pin_10); GPIO_SetBits(GPIOA,GPIO_Pin_15);//AI2 printf("AI2_"); delay_ms(100);} else if (j==4) {GPIO_SetBits(GPIOC,GPIO_Pin_11);//ai3 printf("AI3_"); delay_ms(100);} else if (j==5) {GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOA,GPIO_Pin_15);//ai4 printf("AI4_"); delay_ms(100);} else if (j==6) {GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOC,GPIO_Pin_10);//AI2 printf("AI5_"); delay_ms(100);} else if (j==7) { GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOC,GPIO_Pin_10); GPIO_SetBits(GPIOA,GPIO_Pin_15);//AI6 printf("AI6_"); delay_ms(100);} else if (j==8) { GPIO_SetBits(GPIOC,GPIO_Pin_12);//AI7 printf("AI7_"); delay_ms(100);} else if (j==9) {GPIO_SetBits(GPIOC,GPIO_Pin_12); GPIO_SetBits(GPIOA,GPIO_Pin_15);//ai8 printf("AI8_"); delay_ms(100);} else if (j==10) {GPIO_SetBits(GPIOC,GPIO_Pin_12); GPIO_SetBits(GPIOC,GPIO_Pin_10);//ai4 printf("AI9_"); delay_ms(100);} else if (j==11) { printf("20V_AO_"); delay_ms(100);} else if (j==12) {GPIO_SetBits(GPIOC,GPIO_Pin_13);//AO0 printf("AO0_"); delay_ms(100);} else if (j==13) {GPIO_SetBits(GPIOC,GPIO_Pin_14);//AO1 printf("AO1_"); delay_ms(100);} else if (j==14) {GPIO_SetBits(GPIOC,GPIO_Pin_13); GPIO_SetBits(GPIOC,GPIO_Pin_14);//AO2 printf("AO2_"); delay_ms(100);} else if (j==15) {GPIO_SetBits(GPIOC,GPIO_Pin_15);//AO3 printf("AO3_"); delay_ms(100);} else if (j==16) {GPIO_SetBits(GPIOC,GPIO_Pin_15); GPIO_SetBits(GPIOC,GPIO_Pin_13);//AO4 printf("AO1_"); delay_ms(100);} */ for(k=0;k<4;k++) { if (k==3) { while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//???????? filter(); //i=k; value= GetVolt(After_filter); value=(140-value)*10000/43+2500; printf("temp_"); printf("PC[%d]:\t%d.%d\n",i,value/100,value%100) ; delay_ms(100); delay_ms(100); } else if (k==2) { for(l=0; l<6; l++) { if (l==0) { printf("20V_AO_"); //delay_ms(100); } else if (l==1) {GPIO_SetBits(GPIOC,GPIO_Pin_13);//AO0 printf("AO0_"); // delay_ms(100); } else if (l==2) {GPIO_SetBits(GPIOC,GPIO_Pin_14);//AO1 printf("AO1_"); // delay_ms(100); } else if (l==3) {GPIO_SetBits(GPIOC,GPIO_Pin_13); GPIO_SetBits(GPIOC,GPIO_Pin_14);//AO2 printf("AO2_"); // delay_ms(100); } else if (l==4) {GPIO_SetBits(GPIOC,GPIO_Pin_15);//AO3 printf("AO3_"); // delay_ms(100); } else if (l==5) {GPIO_SetBits(GPIOC,GPIO_Pin_15); GPIO_SetBits(GPIOC,GPIO_Pin_13);//AO4 printf("AO4_"); // delay_ms(100); } while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//???????? filter(); //i=k; value= GetVolt(After_filter); //printf("20V_AO_"); printf("PC[%d]:\t%d.%dv\n",i,value/100,value%100) ; delay_ms(100); delay_ms(100); } } else if (k==1) { while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//???????? filter(); //i=k; value= GetVolt(After_filter); printf("12V_NI_"); printf("PC[%d]:\t%d.%dv\n",i,value/100,value%100) ; delay_ms(100); delay_ms(100); } else if (k==0) { for(j=0; j<11; j++) { if (j==0) { printf("12V_AI_"); //delay_ms(100); } else if (j==1) { GPIO_SetBits(GPIOA,GPIO_Pin_15); //AI0 printf("AI0_"); //delay_ms(100); } else if (j==2) {GPIO_SetBits(GPIOC,GPIO_Pin_10);//AI1 printf("AI1_"); //delay_ms(100); } else if (j==3) {GPIO_SetBits(GPIOC,GPIO_Pin_10); GPIO_SetBits(GPIOA,GPIO_Pin_15);//AI2 printf("AI2_"); // delay_ms(100); } else if (j==4) {GPIO_SetBits(GPIOC,GPIO_Pin_11);//ai3 printf("AI3_"); // delay_ms(100); } else if (j==5) {GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOA,GPIO_Pin_15);//ai4 printf("AI4_"); //delay_ms(100); } else if (j==6) {GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOC,GPIO_Pin_10);//AI2 printf("AI5_"); // delay_ms(100); } else if (j==7) { GPIO_SetBits(GPIOC,GPIO_Pin_11); GPIO_SetBits(GPIOC,GPIO_Pin_10); GPIO_SetBits(GPIOA,GPIO_Pin_15);//AI6 printf("AI6_"); //delay_ms(100); } else if (j==8) { GPIO_SetBits(GPIOC,GPIO_Pin_12);//AI7 printf("AI7_"); //delay_ms(100); } else if (j==9) {GPIO_SetBits(GPIOC,GPIO_Pin_12); GPIO_SetBits(GPIOA,GPIO_Pin_15);//ai8 printf("AI8_"); //delay_ms(100); } else if (j==10) {GPIO_SetBits(GPIOC,GPIO_Pin_12); GPIO_SetBits(GPIOC,GPIO_Pin_10);//ai4 printf("AI9_"); //delay_ms(100); } while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//???????? filter(); //i=k; value= GetVolt(After_filter); //printf("12V_AI\n"); printf("PC[%d]:\t%d.%dv\n",i,value/100,value%100) ; delay_ms(100); delay_ms(100); } } } //FOR //k=0; }//WHILE } //INT [/mw_shl_code]

控制1.zip

2.01 MB, 下载次数: 34

每个人都说我蠢い
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-5 19:39:57 | 显示全部楼层
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2015-8-8 09:58:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
嗯呐,谢谢,老师说帮我看,不用顶了
每个人都说我蠢い
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 21:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表