首页 新闻 会员 周边

关于STM32中 .H中的宏定义和.C用宏定义问题

0
悬赏园豆:200 [已关闭问题] 关闭于 2019-06-19 15:37

这个是LED.H文件相关的宏定义 没有任何问题
#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"
#define LEDRED_PORT GPIOB
#define LEDRED_CLK RCC_APB2Periph_GPIOB
#define LEDRED_PIN GPIO_Pin_5

#define LEDGREED_PORT     GPIOB

#define LEDGREED_CLK RCC_APB2Periph_GPIOB
#define LEDGREED_PIN GPIO_Pin_0

#define LEDBLUE_PORT GPIOB
#define LEDBLUE_CLK RCC_APB2Periph_GPIOB
#define LEDBLUE_PIN GPIO_Pin_1

#define ON 0
#define OFF 1

#define LEDRED(a) if(a) GPIO_SetBits(LEDRED_PORT,LEDRED_PIN); else GPIO_ResetBits(LEDRED_PORT,LEDRED_PIN)

#define LEDGREED(a) if (a) GPIO_SetBits(LEDRED_PORT,LEDRED_PIN); else GPIO_ResetBits(LEDRED_PORT,LEDRED_PIN)

#define LEDBLUE(a) if (a) GPIO_SetBits(LEDRED_PORT,LEDRED_PIN); else GPIO_ResetBits(LEDRED_PORT,LEDRED_PIN)

#define LED_RED LEDRED(ON); LEDGREED(OFF) LEDBLUE(OFF)

#define LED_GREED LEDRED(OFF); LEDGREED(ON) LEDBLUE(OFF)
#define LED_BLUE LEDRED(OFF); LEDGREED(OFF) LEDBLUE(ON)

#define LED_YELLOW LEDRED(ON); LEDGREED(ON) LEDBLUE(OFF)
#define LED_PURPLE LEDRED(ON); LEDGREED(OFF) LEDLUE(ON)

void LED_GPIO_Config(void);
#endif

这个LED.C文件的初始化没有问题

 #include "led.h"

void LED_GPIO_Config(void)
{

        GPIO_InitTypeDef GPIO_InitStructure ;
        RCC_APB2PeriphClockCmd ( LEDRED_CLK | LEDGREED_CLK | LEDBLUE_CLK,ENABLE );
    
    GPIO_InitStructure .GPIO_Pin =LEDRED_PIN;
    
    GPIO_InitStructure .GPIO_Mode =GPIO_Mode_Out_PP;
    
    GPIO_InitStructure .GPIO_Speed=GPIO_Speed_50MHz ;
    
    GPIO_Init (LEDRED_PORT,&GPIO_InitStructure );
    
    GPIO_InitStructure .GPIO_Pin =LEDGREED_PIN;
     
    GPIO_Init (LEDGREED_PORT,&GPIO_InitStructure );

    GPIO_InitStructure .GPIO_Pin =LEDBLUE_PIN;
    
    GPIO_Init (LEDBLUE_PORT,&GPIO_InitStructure );
     
            LEDBLUE (OFF);
    LEDRED (OFF);
    LEDGREED (OFF);
 
 
     
    
}

然后烧录板子 发现LED没有初始化 执行任何操作仿佛有些已经写入了指令

最后我不用宏函数初始化LED了 我直接用了 位函数初始化 发现没问题
疑问: 难道不可以这样用吗 还是要编译 还是.C 文件先于.H文件的编写所以没有初始

求解

喜欢942664的主页 喜欢942664 | 菜鸟二级 | 园豆:202
提问于:2019-06-19 13:50
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册