野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10763|回复: 1

ov7725/lcd与tim的冲突

[复制链接]
发表于 2019-6-7 11:16:42 | 显示全部楼层 |阅读模式
问题是这样的:我需要用到摄像头、LCD显示和pwm输出。在main()中依次初始化PWM、LCD和摄像头后,LCD没有显示摄像头采集到的图像,也就是白屏。我把pwm_tim.c中PWM_TIM_GPIO_Config()函数中的引脚重映射GPIO_PinRemapConfig()注释掉,LCD就可以显示图像了。所以我怀疑是引脚重映射导致引脚重叠,于是我查了一下我使用的是TIM3的完全重映射,重映射后引脚为PC6/7/8/9。其中PC6/7为OV7725使用的引脚。但我在PWM_TIM_Config()中只使用了PC8/9,并没有用到PC6/7。我对重映射的机制并不是十分了解,所以想如果我使用其他重映射,重映射后的引脚跟OV7725引脚没有重叠,应该就没有问题了吧。于是我使用了TIM3的部分重映射功能,重映射后的引脚为PB4/5/0/1。没有一个引脚跟OV7725或者LCD有关。我使用了PB4/5,也就是TIM3的通道1和通道2,但是烧写代码后LCD仍然没有显示。这就让我很疑惑。想请教一下坛友们,谁能帮我解答这个问题?

***********************LCD和OV7725的代码*************************
野火例程,没有修改过

*****************这是pwm_tim.c的代码***********************

[mw_shl_code=c,true]void PWM_TIM_GPIO_Config()
{
    GPIO_InitTypeDef        GPIO_InitStruct;

    PWM_TIM_GPIO_CLKCMD(PWM_TIM_GPIO_CLK, ENABLE);       

    GPIO_PinRemapConfig(PWM_TIM_GPIO_REMAP, ENABLE);//就是这一句!!!!!!!!!!!PWM_TIM_GPIO_REMAP是我定义的宏,具体是GPIO_FullRemap_TIM3。

    GPIO_InitStruct.GPIO_Pin    = PWM1_TIM_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Speed  = GPIO_Speed_50MHz;  //Q: does this configuration affect transmitting rate?
    GPIO_Init(PWM1_TIM_GPIO_PORT, &GPIO_InitStruct);
   
    GPIO_InitStruct.GPIO_Pin    = PWM2_TIM_GPIO_PIN;
    GPIO_Init(PWM2_TIM_GPIO_PORT, &GPIO_InitStruct);  
}

void PWM_TIM_Config()
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStruct;
    TIM_OCInitTypeDef TIM_OCInitStruct;
               
    PWM_TIM_CLKCMD(PWM_TIM_CLK, ENABLE);
       
    TIM_TimeBaseStruct.TIM_Period            = 1000000 / pwm_fre - 1;       
    TIM_TimeBaseStruct.TIM_Prescaler         = PWM_TIM_PRESCALER;       
    TIM_TimeBaseStruct.TIM_ClockDivision     = TIM_CKD_DIV1;       
    TIM_TimeBaseStruct.TIM_CounterMode       = TIM_CounterMode_Up;
        TIM_TimeBaseStruct.TIM_RepetitionCounter = 0;       
    TIM_TimeBaseInit(PWM_TIM_TYPE, &TIM_TimeBaseStruct);
               
    TIM_ClearFlag(PWM_TIM_TYPE, TIM_FLAG_Update);
          
    TIM_ITConfig(PWM_TIM_TYPE,TIM_IT_Update,ENABLE);

        TIM_OCInitStruct.TIM_OCMode         = TIM_OCMode_PWM1;        // select PWM mode as PWM1
        TIM_OCInitStruct.TIM_OutputState    = TIM_OutputState_Enable;
        TIM_OCInitStruct.TIM_OCPolarity     = TIM_OCPolarity_High;  //high level valid

//        TIM_OCInitStruct.TIM_Pulse = 10000 * pwm1_duty / pwm_fre;
//        TIM_OC1Init(PWM_TIM_TYPE, &TIM_OCInitStruct);
//        TIM_OC1PreloadConfig(PWM_TIM_TYPE, TIM_OCPreload_Enable);

//        TIM_OCInitStruct.TIM_Pulse = 10000 * pwm2_duty / pwm_fre;
//        TIM_OC2Init(PWM_TIM_TYPE, &TIM_OCInitStruct);
//        TIM_OC2PreloadConfig(PWM_TIM_TYPE, TIM_OCPreload_Enable);

        TIM_OCInitStruct.TIM_Pulse = 10000 * pwm1_duty / pwm_fre;
        TIM_OC3Init(PWM_TIM_TYPE, &TIM_OCInitStruct);//!!!!!!!!!!!!这里我用的是通道3和4,也就是PC8/9
        TIM_OC3PreloadConfig(PWM_TIM_TYPE, TIM_OCPreload_Enable);

        TIM_OCInitStruct.TIM_Pulse = 10000 * pwm2_duty / pwm_fre;
        TIM_OC4Init(PWM_TIM_TYPE, &TIM_OCInitStruct);
        TIM_OC4PreloadConfig(PWM_TIM_TYPE, TIM_OCPreload_Enable);

    TIM_Cmd(PWM_TIM_TYPE, ENABLE);
}
[/mw_shl_code]

回复

使用道具 举报

发表于 2019-6-8 13:01:02 | 显示全部楼层
先初始化LCD试试?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-28 12:24 , Processed in 0.029777 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表