野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21366|回复: 2

请高手指教,谢谢

[复制链接]
发表于 2015-4-10 10:59:12 | 显示全部楼层 |阅读模式
小弟刚弄stm32,有问题请教。光电开关通时为高电平,被遮挡时为低电平,想通过引脚高低电平的检测控制其他引脚高低电平的输出来点亮灯,在光电开关不被遮挡时,PC13输出低电平,被遮挡时PC13输出高电平以点亮小灯,不知道哪里出问题了,请各位大虾看看,谢谢。


LED.C
#include "led.h"

/*
* oˉêyÃû£oLED_GPIO_Config
* Ãèêö  £oÅäÖÃLEDóÃμ½μÄI/O¿ú
* êäèë  £oÎT
* êä3ö  £oÎT
*/
void LED_GPIO_Config(void)
{               
        /*¶¨òåò»¸öGPIO_InitTypeDefààDíμĽá11ìå*/
        GPIO_InitTypeDef GPIO_InitStructure;

        /*¿aÆôGPIOCμÄíaéèê±Öó*/
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);

        /*Ñ¡Ôñòa¿ØÖÆμÄGPIOCòy½Å*/                                                                                                                          
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;       

        /*éèÖÃòy½ÅÄ£ê½Îaí¨óÃíÆíìêä3ö*/
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   

        /*éèÖÃòy½ÅËùÂêÎa50MHz */   
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        /*μ÷óÿaoˉêy£¬3õê¼»ˉGPIOC*/
          GPIO_Init(GPIOC, &GPIO_InitStructure);                  

        /* 1رÕËùóDledμÆ        */
//        GPIO_SetBits(GPIOC, GPIO_Pin_13);         
}

led.h的
#ifndef __LED_H
#define        __LED_H


#include "stm32f10x.h"


/* the macro definition to trigger the led on or off
* 1 - off
- 0 - on
*/
//#define ON  0
//#define OFF 1


////′ø2Îo꣬¿éòÔÏñÄúáaoˉêyò»Ñùê1óÃ
//#define LED1(a)        if (a)        \
//                                        GPIO_SetBits(GPIOC,GPIO_Pin_13);\
//                                        else                \
//                                        GPIO_ResetBits(GPIOC,GPIO_Pin_13)






void LED_GPIO_Config(void);


#endif /* __LED_H */



main.c的


#include "stm32f10x.h"
#include "led.h"
u8 ReadValue;


void OPT_GPIO_Config(void)
{               
        /*¶¨òåò»¸öGPIO_InitTypeDefààDíμĽá11ìå*/
        GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
        // portstatus == GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7);
        ReadValue = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7);
}
   
  


//void Delay(__IO u32 nCount);


/*
* oˉêyÃû£omain
* Ãèêö  £oÖ÷oˉêy
* êäèë  £oÎT
* êä3ö  £oÎT
*/
int main(void)
{       
        OPT_GPIO_Config();
        /* LED ¶Ë¿ú3õê¼»ˉ */
        LED_GPIO_Config();       
       
  if (ReadValue)
                GPIO_ResetBits(GPIOC,GPIO_Pin_13);
        else
                GPIO_SetBits(GPIOC,GPIO_Pin_13);
       
}


//void Delay(__IO u32 nCount)         //¼òμ¥μÄÑóê±oˉêy
//{
//        for(; nCount != 0; nCount--);
//}




/******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/



回复

使用道具 举报

发表于 2015-4-10 12:58:38 | 显示全部楼层
int main(void)
{        
        OPT_GPIO_Config();
        /* LED ¶Ë¿ú3õê¼»ˉ */
        LED_GPIO_Config();        
        
while(1)
{
ReadValue = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7);
if (ReadValue)
                GPIO_ResetBits(GPIOC,GPIO_Pin_13);
        else
                GPIO_SetBits(GPIOC,GPIO_Pin_13);
        
}
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-10 14:51:44 | 显示全部楼层
亽亼 发表于 2015-4-10 12:58
int main(void)
{        
        OPT_GPIO_Config();

谢谢你,解决了我的问题,谢谢啊,小白我很是感谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 02:07 , Processed in 0.086664 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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