我想在这个程序里添加新的功能,可是添加进去之后板子直接lcd都无法显示想问问各位大神怎么解决。

2019-07-14 20:34发布

以下为main程序被注释部分是我想添加的部分

#include "public.h"
#include "adc.h"
#include "systick.h"
#include "gui.h"



int main(void)
{    GPIO_InitTypeDef GPIO_InitStructure;
   
    switch()
    u8 i,dat1[6],dat2[6],dat3[6],dat4[6];
    u16 value;
//    u16 IC2value;
    float ad;
    TFT_Init();     //TFT初始化
    adc_init();     //ADC初始化
   
    TFT_ClearScreen(BLACK);
    GUI_Show12ASCII(10,100," Vm/V ",YELLOW,BLACK);
    GUI_Show12ASCII(10,130," F/HZ ",YELLOW,BLACK);
    GUI_Show12ASCII(10,160," D/% ",YELLOW,BLACK);
    GUI_Show12ASCII(10,190," Tr/ns ",YELLOW,BLACK);

     
    while(1)
    {
//    GPIO_InitTypeDef GPIO_InitStructure;
//    NVIC_InitTypeDef NVIC_InitStructure;
//    TIM_ICInitTypeDef TIM_ICInitStructure;
//   
//        
//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);      //时钟配置
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                               //GPIO配置
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);
//
//  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;                     //NVIC配置
//  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
//  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//  NVIC_Init(&NVIC_InitStructure);
//
//  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;                   //通道选择
//  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;       //上升沿触发
//  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;    //管脚与寄存器对应关系
//  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;     
////输入预分频。意思是控制在多少个  输入周期做一次捕获,如果
////输入的信号频率没有变,测得的周期也不会变。比如选择4分频,则每四个输入周期才做一次捕获,这样在输入信号变化不频繁的情况下,
////可以减少软件被不断中断的次数。
//  TIM_ICInitStructure.TIM_ICFilter = 0x0;       //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF
//  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);                 //根据参数配置TIM外设信息
//  TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);                //选择IC2为始终触发源
//  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
//   //TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更新事件
//  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); //启动定时器的被动触发
//  TIM_Cmd(TIM3, ENABLE);                                 //启动TIM3      
//  TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);     //打开中断


        value=0;
        for(i=0;i<10;i++)
        {     
            ADC_SoftwareStartConvCmd(ADC1, ENABLE);
            while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//转换结束标志位
            value=value+ADC_GetConversionValue(ADC1);//返回最近一次ADCx规则组的转换结果   
        }

        value=value/10;
        ad=value*3.3/4096;
        value=(u16)(ad*100);

        dat1[0]=value/100+0x30;
        dat1[1]='.';
        dat1[2]=value%100/10+0x30;
        dat1[3]=value%100%10+0x30;
        dat1[4]='0';
        dat1[5]='';


        GUI_Show12ASCII(160,100,dat1,RED,BLACK);
        GUI_Show12ASCII(160,130,dat2,RED,BLACK);
        GUI_Show12ASCII(160,160,dat3,RED,BLACK);
        GUI_Show12ASCII(160,190,dat4,RED,BLACK);        
    }            
}


////中断处理函数
//void TIM3_IRQHandler(void)
//{
//u16 IC2value;
//u16 Frequency,DutyCycle;

//  TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);       //清楚TIM的中断待处理位
//   IC2value = TIM_GetCapture2();              //读取IC2捕获寄存器的值,即为PWM周期的计数值
//  if (IC2value != 0)
//  {   
//    DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2value; //读取IC1捕获寄存器的值,并计算占空比
//   Frequency = 72000000 / IC2value;      //计算PWM频率。
//   //Frequency = 自己分频过的定时器时钟频率 / IC2Value;
//  }
//  else
//  {
//    DutyCycle = 0;
//    Frequency = 0;
//  }
//}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。