先将数据AD转换,这里是在正点原子的AD基础上改的
第一次发CNDS,很不习惯��以后会慢慢改进的
include “adc.h”
include “delay.h”
ADC_HandleTypeDef ADC1_Handler;//ADC¾ä±ú
//³õʼ»¯ADC
//ch: ADC_channels
//ͨµÀÖµ 0~16È¡Öµ·¶Î§Îª£ºADC_CHANNEL_0~ADC_CHANNEL_16
void MY_ADC_Init(void)
{
ADC1_Handler.Instance=ADC1;
ADC1_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ÎÒ°ÑÕâÀï¸Ä³É¶þ·ÖƵ¿´¿´½á¹ûÔõôÑù
ADC1_Handler.Init.Resolution=ADC_RESOLUTION_8B; //12λģʽ
ADC1_Handler.Init.DataAlign=ADC_DATAALIGN_RIGHT; //ÓÒ¶ÔÆë
ADC1_Handler.Init.ScanConvMode=DISABLE; //·ÇɨÃèģʽ
ADC1_Handler.Init.EOCSelection=DISABLE; //¹Ø±ÕEOCÖжÏ
ADC1_Handler.Init.ContinuousConvMode=DISABLE;
ADC1_Handler.Init.NbrOfConversion=1;
ADC1_Handler.Init.DiscontinuousConvMode=DISABLE;
ADC1_Handler.Init.NbrOfDiscConversion=0;
ADC1_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START;
ADC1_Handler.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;//ʹÓÃÈí¼þ´¥·¢
ADC1_Handler.Init.DMAContinuousRequests=DISABLE;
HAL_ADC_Init(&ADC1_Handler); //³õʼ»¯
}
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_ADC1_CLK_ENABLE(); //ʹÄÜADC1ʱÖÓ
__HAL_RCC_GPIOA_CLK_ENABLE(); //¿ªÆôGPIOAʱÖÓ
GPIO_Initure.Pin=GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_1|GPIO_PIN_4; //PA5
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //Ä£Äâ
GPIO_Initure.Pull=GPIO_NOPULL; //²»´øÉÏÏÂÀ
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
}
u16 Get_Adc(u32 ch)
{
ADC_ChannelConfTypeDef ADC1_ChanConf;
ADC1_ChanConf.Channel=ch;
ADC1_ChanConf.Rank=1;
ADC1_ChanConf.SamplingTime=ADC_SAMPLETIME_3CYCLES;
ADC1_ChanConf.Offset=0;
HAL_ADC_ConfigChannel(&ADC1_Handler,&ADC1_ChanConf);
HAL_ADC_Start(&ADC1_Handler);
HAL_ADC_PollForConversion(&ADC1_Handler,10);
return (u16)HAL_ADC_GetValue(&ADC1_Handler);
}
//»ñÈ¡Ö¸¶¨Í¨µÀµÄת»»Öµ£¬È¡times´Î,È»ºóƽ¾ù
//times:»ñÈ¡´ÎÊý
//·µ»ØÖµ:ͨµÀchµÄtimes´Îת»»½á¹ûƽ¾ùÖµ
u16 Get_Adc_Average(u32 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t
include “sys.h”
include “delay.h”
include “usart.h”
include “led.h”
include “key.h”
include “lcd.h”
include “sdram.h”
include “usmart.h”
include “adc.h”
include “pwmdac.h”
include “timer.h”
//ÉèÖÃÊä³öµçѹ
//vol:0~330,´ú±í0~3.3V
u16 flag=0;
void PWM_DAC_Set(u16 vol)
{
double temp=vol;
temp/=100;
temp=temp*256/3.3;
TIM_SetTIM9Compare2((u32)temp);
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
int main(void)
{
// u16 adc;
u16 adcx=0;
u16 adcx_1=0;
u16 adcy=0;
u16 adcz=0;
u16 count;
//u16 adczz;
u16 i;
u32 j;
float tempx;
Cache_Enable(); //´ò¿ªL1-Cache
HAL_Init(); //³õʼ»¯HAL¿â
Stm32_Clock_Init(432,25,2,9); //ÉèÖÃʱÖÓ,216Mhz
delay_init(216); //ÑÓʱ³õʼ»¯
uart_init(115200); //´®¿Ú³õʼ»¯
usmart_dev.init(108); //³õʼ»¯USMART
LED_Init(); //³õʼ»¯LED
KEY_Init(); //³õʼ»¯°´¼ü
SDRAM_Init(); //³õʼ»¯SDRAM
LCD_Init(); //LCD³õʼ»¯
MY_ADC_Init(); //³õʼ»¯ADC1
count=0;
i=3000;
j=600000;
TIM9_CH2_PWM_Init(255,1); //TIM9 PWM³õʼ»¯, Fpwm=108M/256=421.875Khz.
TIM3_Init(10000-1,10800-1);
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"diansai");
LCD_ShowString(30,70,200,16,16,"fengfengzhitest");
LCD_ShowString(30,90,200,16,16,"2018.7.23");
LCD_ShowString(30,110,200,16,16,"finished ");
LCD_ShowString(30,130,200,16,16,"PA4input");
POINT_COLOR=BLUE;//ÉèÖÃ×ÖÌåΪÀ¶É«
LCD_ShowString(30,190,200,16,16,"PA5 VaL:0.00000A");
LCD_ShowString(30,210,200,16,16,"cnt VAL:");
i=5000;
while(i>0)
{
if(Get_Adc_Average(ADC_CHANNEL_5,1)>adcx_1)
adcx_1=Get_Adc_Average(ADC_CHANNEL_5,1); //µÃµ½ADCת»»Öµ
i–;
}
adcy=adcx_1/2;
tempx=(float)adcx_1*(3.3/256); //µÃµ½ADCµçѹֵ
tempx=tempx*4/10;
adcx_1=tempx;
LCD_ShowxNum(94,190,(tempx),1,16,0);
tempx-=adcx_1;
tempx*=1000;
LCD_ShowxNum(110,190,tempx,3,16,0x80);
//while(i>0)
// adczz=Get_Adc_Average(ADC_CHANNEL_4,1)
// adc=HAL_TIM_ReadCapturedValue(&TIM9_Handler,TIM_CHANNEL_2);
//
//
//
//LCD_ShowxNum(110,270,Get_Adc_Average(ADC_CHANNEL_4,1),3,16,0x80);
//ÏÔʾµçѹֵµÄСÊý²¿·Ö
//
while(1)
{
//
// if(Get_Adc_Average(ADC_CHANNEL_4,1)>adcx_1)
adcx_1=Get_Adc_Average(ADC_CHANNEL_5,10); //µÃµ½ADCת»»Öµ
//LCD_ShowxNum(180,190,adcx_1,3,16,0x80); //ÏÔʾµçѹֵµÄСÊý²¿·Ö
//adcy=adcx_1/2;
// if(Get_Adc(ADC_CHANNEL_4)