stm32ADC实验

一、实验目的:

基于stm32f103zet6编写程序,通过 ADC1 的通道 1(PA1)来读取外部电压值(3.3V),并使读取的电压值在串口调试助手上显示

二、实验主要代码:

该代码由正点原子stm32f103战舰v3ADC实验例程修改而来,由于原代码只能采集电压并在LCD上显示,不能在电脑屏幕上看到,故在这里只给出修改后的main.c,在 main.c 里面编写如下代码:  

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"	 
#include "tsensor.h"
#include "adc.h"

 int main(void)
 {	 	
	u16 times=0;
	u16 adcx;
    float temp;
    delay_init(); 
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
	uart_init(115200);
    LED_Init(); 
    LCD_Init(); 
    ADC_Config_Init(); 
	KEY_Init();   
	 
    POINT_COLOR=RED; 
    LCD_ShowString(60,50,200,16,16,"WarShip STM32");
    LCD_ShowString(60,70,200,16,16,"ADC TEST");
    LCD_ShowString(60,90,200,16,16,"xhsbq");
    LCD_ShowString(30,110,200,16,16,"2023/8/15");
    POINT_COLOR=BLUE; 
    LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:"); 
    LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V"); 
    
	while(1)
    {
     adcx=Get_Adc_Average(ADC_Channel_1,10);
     LCD_ShowxNum(156,130,adcx,4,16,0);
     temp=(float)adcx*(3.3/4096);
	 adcx=temp;
     LCD_ShowxNum(156,150,adcx,1,16,0);
     temp-=adcx;
     temp*=1000;
     LCD_ShowxNum(172,150,temp,3,16,0X80);

	 if(USART_RX_STA&0x8000)
		{					   
	
		}
     else
		{
			times++;
			if(times%5000==0)
			{
				printf("\r\n战舰STM32开发板\r\n");
				printf("xhsbq\r\n\r\n");
			}
			if(times%30==0)printf("\r\n%f\r\n",adcx+temp/1000);  
			delay_ms(10);   
		}
        }
}



 

三、实验结果:

在这里仅展示串口调试助手看到的值

 


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值