条件编译的用法

本文介绍了C语言中的条件编译指令,通过实例展示了如何使用#if 0和#if 1来控制代码块的编译。在正点原子的STM32串口初始化程序中,通过#define EN_USART1_RX的注释实现串口接收功能的开关,以此节省SRAM和Flash空间。通过这样的方式,开发者可以根据需求灵活地启用或禁用特定功能。
摘要由CSDN通过智能技术生成

        看正点原子的stm32串口初始化程序,usart.h文件里如下:

#ifndef __USART_H
#define __USART_H
#include <stm32f10x_lib.h>
#include "stdio.h"	 
  	  	
extern u8 USART_RX_BUF[64];     //接收缓冲,最大63个字节.末字节为换行符 
extern u8 USART_RX_STA;         //接收状态标记	

//如果想串口中断接收,请不要注释以下宏定义
//#define EN_USART1_RX //使能串口1接收
void uart_init(u32 pclk2,u32 bound);

#endif	


        这段程序里#define EN_USART1_RX被注释掉了。

        usart.c里有一段串口中断响应子函数程序如下:

#ifdef EN_USART1_RX   //如果使能了接收
	
u8 USART_RX_BUF[64];     //接收缓冲,最大64个字节.
u8 USART_RX_STA=0;       //接收状态标记	  
  
void USART1_IRQHandler(void)
{
    ...... 											 
} 
#endif		


手册给出的解释是,这里用了宏定义#ifdef,当需要使用串口接收的时候,只要在usart.h里面定义EN_USART1_RX就可以了。不使用的时候注释掉就可,这样可以省出部分sram和flash。

下转一篇文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值