STM32学习笔记之ADC--DMA方式.doc
文本预览下载声明
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
显示全部