第十一个实验 ADC采集实验 亲测代码可用
来源:互联网 发布:apriori算法思想 编辑:程序博客网 时间:2024/06/05 06:16
亲测代码可用 代码下载地址:
#include "stm32f10x.h"
void delay_ms(u16 nms);
void LEDXToggle(uint8_t ledx);
#include <stdio.h>
void delay_ms(u16 nms);
void LEDXToggle(uint8_t ledx);
#include <stdio.h>
int main()
{
uint16_t Temp_Value;
float ADC_Value=0.00;
while (SysTick_Config(SystemCoreClock/1000000));
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure; //??????????
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA,ENABLE);
/*USART1_TX ->PA9*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //??????????
//????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//????9???
GPIO_Init(GPIOA , &GPIO_InitStructure); //????,?????????????
/*USART1_RX ->PA10*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
//??????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
/*????????*/
USART_InitStructure.USART_BaudRate = 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; //?????????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //??????????
//????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//????9???
GPIO_Init(GPIOA , &GPIO_InitStructure); //????,?????????????
/*USART1_RX ->PA10*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
//??????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
/*????????*/
USART_InitStructure.USART_BaudRate = 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; //?????????
USART_Init(USART1, &USART_InitStructure);
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_Cmd(USART1, ENABLE);
printf("*************************************************************\r\n");
printf("* *\r\n");
printf("* Thank you for using The Development Board Of YuanDi ! ^_^ *\r\n");
printf("* *\r\n");
printf("*************************************************************\r\n");
ADC_InitTypeDef ADC_InitStructure;
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_Cmd(USART1, ENABLE);
printf("*************************************************************\r\n");
printf("* *\r\n");
printf("* Thank you for using The Development Board Of YuanDi ! ^_^ *\r\n");
printf("* *\r\n");
printf("*************************************************************\r\n");
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 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);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 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 channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 */
ADC_SoftwareStartConvCmd(ADC1,ENABLE); /* ʹÄÜת»»¿ªÊ¼ */
while (1)
{
Temp_Value = ADC_GetConversionValue(ADC1);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 */
ADC_SoftwareStartConvCmd(ADC1,ENABLE); /* ʹÄÜת»»¿ªÊ¼ */
while (1)
{
Temp_Value = ADC_GetConversionValue(ADC1);
//关于为什么要用Temp_Value*(3.3/4096)这个问题
//因为SDC输出的是一个没有单位的12位ADC值 最大的数字量是4096
//把数字量转换为有单位的值的时候就要用到参考电压来计算。得到多少伏的量
ADC_Value = (3.3/4096)*Temp_Value; /*½«ADֵת»»Îªµçѹֵ*/
printf("\r\n The Temp_Value is %d \r\n",Temp_Value);
printf("\r\n The Value is %f \r\n",ADC_Value);
// OLED_DisDecimal(10, 15, ADC_Value,4, &tFont12);
// LEDXToggle(LED1);
delay_ms(500);
}
}
ADC_Value = (3.3/4096)*Temp_Value; /*½«ADֵת»»Îªµçѹֵ*/
printf("\r\n The Temp_Value is %d \r\n",Temp_Value);
printf("\r\n The Value is %f \r\n",ADC_Value);
// OLED_DisDecimal(10, 15, ADC_Value,4, &tFont12);
// LEDXToggle(LED1);
delay_ms(500);
}
}
void LEDXToggle(uint8_t ledx)
{
if(ledx==1)
{
GPIOC->ODR^=GPIO_Pin_13;
}
}
{
if(ledx==1)
{
GPIOC->ODR^=GPIO_Pin_13;
}
}
u16 nTime;
void SysTick_Handler(void)
{
if(nTime)
nTime--;
}
void SysTick_Handler(void)
{
if(nTime)
nTime--;
}
void delay_us(u16 nus)
{
nTime=nus;
while(nTime);
}
void delay_ms(u16 nms)
{
while(nms--)
delay_us(1000);
}
int fputc(int ch, FILE *f)
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
阅读全文
1 0
- 第十一个实验 ADC采集实验 亲测代码可用
- 第十个实验 TIMER 定时器的配置及使用 代码亲测可用
- ADC实验
- ADC实验
- 一个简单的ADC采样实验。
- ARM串口实验,ADC实验,I2C实验
- FL2440 adc 实验
- Launchpad ADC实验
- 关于STM32 ADC实验
- 12、ADC实验
- STM32学习-ADC实验
- ADC实验复习总结
- 【stm32f407】ADC实验
- CC2530基础实验五 ADC转换实验
- [Not Solved] ][Embedded] [FL2440] ADS实验六: ADC实验: 还没有完全理解代码
- JAVA--第十一周实验--模拟一个信号灯的软件--代码重构--升级版
- ARM学习之ADC实验
- Zigbee基础实验之ADC
- VBA宏
- ScrollView嵌套ListView或者Recyleview引起的数据显示不完整
- Linux下导入sql文件
- java逻辑运算符
- Pixhawk之通过XML文件生成自定义MAVLink消息结构
- 第十一个实验 ADC采集实验 亲测代码可用
- Spring定时任务调定时任务
- windows下nginx的安装及使用方法入门
- 无法远程连接mysql
- 在iframe内通过JS获取当前iframe本身,以及操作
- Ubuntu 16.04 常用软件安装
- 锚链接跳转+滚动效果
- spark源码学习
- 【Scikit-Learn 中文文档】朴素贝叶斯