一个8通道adc连续转换的程序.doc_第1页
一个8通道adc连续转换的程序.doc_第2页
一个8通道adc连续转换的程序.doc_第3页
一个8通道adc连续转换的程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* Function Name : main* Description : Main program* Input : None* Output : None* Return : None*/int main(void)#ifdef DEBUG debug();#endif /* System clocks configuration -*/ RCC_Configuration(); /* NVIC configuration -*/ NVIC_Configuration(); /* GPIO configuration -*/ GPIO_Configuration(); LcdShow_Init(); /* DMA1 channel1 configuration -*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;/外设地址 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_RCVTab;/内存地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;/dma传输方向单向 DMA_InitStructure.DMA_BufferSize = 160;/设置DMA在传输时缓冲区的长度 word DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;/设置DMA的外设递增模式,一个外设 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;/设置DMA的内存递增模式, DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;/外设数据字长 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;/内存数据字长 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;/设置DMA的传输模式:连续不断的循环模式 DMA_InitStructure.DMA_Priority = DMA_Priority_High;/设置DMA的优先级别 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;/设置DMA的2个memory中的变量互相访问 DMA_Init(DMA1_Channel1, &DMA_InitStructure); /* Enable DMA1 channel1 */ DMA_Cmd(DMA1_Channel1, ENABLE); /* ADC1 configuration -*/ 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 = 8;/用于转换的通道数 ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channels configuration 规则模式通道配置*/ ADC_RegularChannelConfig(ADC1, ADC_Channel_8 , 1, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_9 , 2, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 3, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 4, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 5, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 6, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 7, ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 8, ADC_SampleTime_239Cycles5); /* Enable ADC1 DMA 使能ADC1 DMA*/ ADC_DMACmd(ADC1, ENABLE); /* Enable ADC1 使能ADC1*/ ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1); /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(1) vu16 value1 = 0; vu16 value2 = 0; vu16 value3 = 0; vu16 value4 = 0; vu16 value5 = 0; vu16 value6 = 0; vu16 value7 = 0; vu16 value8 = 0;value1 = average(ADC_RCVTab,0);value2 = average(ADC_RCVTab,1);value3 = average(ADC_RCVTab,2);value4 = average(ADC_RCVTab,3);value5 = average(ADC_RCVTab,4);value6 = average(ADC_RCVTab,5);value7 = average(ADC_RCVTab,6);value8 = average(ADC_RCVTab,7); u8 num1 = value3 % 10; u8 num2 = (value3 / 10) % 10; u8 num3= (value3 / 100) % 10; u8 num4 = value3 / 1000; if (num1 9) display3 = num1 + (65 - 10); else display3 = num1 + (48-0); if (num2 9) display2 = num2 +(65 - 10); else di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论