最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

STM32 AD+USART

来源:动视网 责编:小OO 时间:2025-10-01 10:22:52
文档

STM32 AD+USART

/*********************************************************************************@fileADC/ADC1_DMA/main.c*@authorMCDApplicationTeam*@versionV3.5.0*@date08-April-2011*@briefMainprogrambody*************************************************************
推荐度:
导读/*********************************************************************************@fileADC/ADC1_DMA/main.c*@authorMCDApplicationTeam*@versionV3.5.0*@date08-April-2011*@briefMainprogrambody*************************************************************
/**

******************************************************************************

* @file ADC/ADC1_DMA/main.c

* @author MCD Application Team

* @version V3.5.0

* @date 08-April-2011

* @brief Main program body

******************************************************************************

* @attention

*

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE

* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY

* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING

* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE

* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*

*

© COPYRIGHT 2011 STMicroelectronics

******************************************************************************

*/

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x.h"

#include"stdio.h"

/** @addtogroup STM32F10x_StdPeriph_Examples

* @{

*/

/** @addtogroup ADC_ADC1_DMA

* @{

*/

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private variables ---------------------------------------------------------*/

ADC_InitTypeDef ADC_InitStructure;

DMA_InitTypeDef DMA_InitStructure;

//__IO uint16_t ADCConvertedValue;

unsigned char TxBuf2[30] = "\

\

当前电压值为: \

\

";

/* Private function prototypes -----------------------------------------------*/

void RCC_Configuration(void);

void GPIO_Configuration(void);

void delay(u16 t)

{

unsigned int i,x;

for (x=0;x{

for (i=0;i<12000;i++);

//当i=12000时,就实现了1ms的延时。

//不过这个延时并不是非常精确的。

}

}

void USART_Configuration(void) //串口初始化函数

{

//串口参数初始化

USART_InitTypeDef USART_InitStructure; //串口设置恢复默认参数

//初始化参数设置

USART_InitStructure.USART_BaudRate = 115200; //波特率9600

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长8位

USART_InitStructure.USART_StopBits = USART_StopBits_1; //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;//打开Rx接收和Tx发送功能

USART_Init(USART2, &USART_InitStructure); //初始化

USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

USART_ITConfig(USART2, USART_

IT_TXE, ENABLE);

USART_Cmd(USART2, ENABLE); //启动串口

}

int fputc(int ch, FILE *f)

{

USART_SendData(USART2, (unsigned char) ch);// USART1 可以换成 USART2 等

while (!(USART2->SR & USART_FLAG_TXE));

return (ch);

}

// 接收数据

int GetKey (void)

{

while (!(USART2->SR & USART_FLAG_RXNE));

return ((int)(USART2->DR & 0x1FF));

}

/* Private functions ---------------------------------------------------------*/

/**

* @brief Main program

* @param None

* @retval None

*/

int main(void)

{

/*!< At this stage the microcontroller clock setting is already configured,

this is done through SystemInit() function which is called from startup

file (startup_stm32f10x_xx.s) before to branch to application main.

To reconfigure the default setting of SystemInit() function, refer to

system_stm32f10x.c file

*/

unsigned int j;

unsigned int i;

float total;

float data;

float value;

u16 ADCConvertedValue[10];

SystemInit();

/* System clocks configuration ---------------------------------------------*/

RCC_Configuration();

/* GPIO configuration ------------------------------------------------------*/

GPIO_Configuration();

/* USART configuration ------------------------------------------------------*/

USART_Configuration();

/* 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 = 1;

ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channel14 configuration */

ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);

/* Enable ADC1 */

ADC_Cmd(ADC1, ENABLE);

/* Enable ADC1 reset calibration register */

ADC_ResetCalibration(ADC1);

/* Check the end of ADC1 reset calibration register */

while(ADC_GetResetCalibrationStatus(ADC1));

/* Start ADC1 calibration */

ADC_StartCalibration(ADC1);

/* Check the end of ADC1 calibration */

while(ADC_GetCalibrationStatus(ADC1));

/* Start ADC1 Software Conversion */

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

while (1)

{

data=0;

for(i=0;i<10;i++)

{

ADCConvertedValue[i]=ADC_GetConversionValue(ADC1);

data=data+ADCConvertedValue[i];

}

data=data/10;

total=3.28/4096;

value=total*data;

for( j = 0; TxBuf2[j] != '\\0'; j++)

{

USART_SendData(USART2 , TxBuf2[j]);

while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);

}

//USART_SendData(USART2 ,value);

printf("%f\

\

G_TC)==RESET);

delay(100);

}

}

/**

* @brief Configures the different system clocks.

* @param None

* @retval None

*/

void RCC_Configuration(void)

{

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)

/* ADCCLK = PCLK2/2 */

RCC_ADCCLKConfig(RCC_PCLK2_Div2);

#else

/* ADCCLK = PCLK2/4 */

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

#endif

/* Enable peripheral clocks ------------------------------------------------*/

/* Enable USART2 clock */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

/* Enable ADC1 and GPIOC clock */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);

}

/**

* @brief Configures the different GPIO ports.

* @param None

* @retval None

*/

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2,ENABLE);

//RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

// RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);

/* Configure PC.04 (ADC Channel14) as analog input -------------------------*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t* file, uint32_t line)

{

/* User can add his own implementation to report the file name and line number,

ex: printf("Wrong parameters value: file %s on line %d\

\

文档

STM32 AD+USART

/*********************************************************************************@fileADC/ADC1_DMA/main.c*@authorMCDApplicationTeam*@versionV3.5.0*@date08-April-2011*@briefMainprogrambody*************************************************************
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top