文档详情

STM32学习笔记之ADC--DMA方式.doc

发布:2016-05-19约8.52千字共6页下载文档
文本预览下载声明
STM32学习笔记之ADC--DMA方式 STM32学习 2010-10-11 16:17:38 阅读24 评论0 字号:大中小 程序功能是把ADC1模块里通道14的输入电压转换后通过USART2发送到PC,在PC机上用串口调试助手观察接收数据: STM32是12位ADC,测量结果基本还可以!程序用了DMA来传输ADC转换值,调高了读取速度。串口部分用是上一篇串口调试笔记里的代码。 /************************************************************************ 文 件 名: main.c 说 明: 将ADC转换值通过串口发送到PC端 主要硬件: 编译环境: MDK3.10 当前版本: 1.0 ************************************************************************/ #i nclude stm32f10x_lib.h #i nclude stdio.h #define ADC1_DR_Address ((u32)0x4001244C) #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker-Libraries-Small printf set to Yes) calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ vu16 ADC_ConvertedValue; void RCC_Config(void); void GPIO_Config(void); void USART_Config(void); void DMA_Config(void); void ADC_Config(void); void Put_String(u8 *p); void Delay(vu32 nCount); int main(void) { RCC_Config(); GPIO_Config(); USART_Config(); DMA_Config(); ADC_Config(); while(1) { Delay(0x8FFFF); printf(ADC = %X Volt = %d mv\r\n, ADC_ConvertedValue, ADC_ConvertedValue*3300/4096); } } /************************************************* 函数: void RCC_Config(void) 功能: 配置系统时钟 参数: 无 返回: 无 **************************************************/ void RCC_Config(void) { ErrorStatus HSEStartUpStatus;//定义外部高速晶体启动状态枚举变量 RCC_DeInit();//复位RCC外部设备寄存器到默认值 RCC_HSEConfig(RCC_HSE_ON); //打开外部高速晶振 HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待外部高速时钟准备好 if(HSEStartUpStatus == SUCCESS)//外部高速时钟已经准别好 { RCC_HCLKConfig(RCC_SYSCLK_Div1);//配置AHB(HCLK)时钟=SYSCLK RCC_PCLK2Config(RCC_HCLK_Div1); //配置APB2(PCLK2)钟=AHB时钟 RCC_PCLK1Config(RCC_HCLK_Div2);//配置APB1(PCLK1)钟=AHB 1/2时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div4);//配置ADC时钟=PCLK2 1/4 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //配置PLL时钟 == 外部高速晶体时钟*9 RCC_ADCCLKC
显示全部
相似文档