2018年TI杯A题stm32F767代码

先将数据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)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值