Keil使用记录

1.预编译未定义至文件导致的头文件引用失败

(以正点原子工程为例)拿到了供应商的代码工程,在供应商的代码文件中的头文件有一个宏定义LED0和LED1,在其他文件无无法调用

#ifndef __LED_H
#define __LED_H	 
#include "sys.h"

#ifdef TT_TEST

#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5	

#endif
void LED_Init(void);//³õʼ»¯

		 				    
#endif

在led.h中通过TT_TEST宏定义了LED0LED1

我现在想在usart.c中去调用LED0和LED1,usart.c的代码如下。于是死活不能通过编译,会报错。

#include "sys.h"
#include "usart.h"	  
#include "led.h"

void test(void)
{
	LED0 = 1;
}


#endif	

后来经过排查发现,led.h的宏定义TT_TEST在user文件夹下的C/C++标签下定义的,也就是说宏定义TT_TEST作用域仅仅在USER 文件夹下。

 

在一般的使用当中,都是把在工程文件(LED文件夹下)进行宏定义的,所以这个就是KEIL的一个使用问题。故若我们想在usat.c文件下使用此宏定义,仅仅需要右键usart.c的option for usart.c宏定义TT_TEST,即可调用LED0和LED1。

 

总结:KEIL的宏定义可具体到每个文件夹和文件,故调用其他地方的参数或结构体,需注意宏定义的作用范围。

 

2.如何生成bin文件

option-->user-->After Build处添加命令  fromelf --bin -o "$L@L.bin" "#L",即可在(可通过Build output看到生成文件的位置)相关目录下生成bin文件

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值