专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 硬件开发

关于宏定义解决办法

发布时间:2010-06-13 21:44:36 文章来源:www.iduyao.cn 采编人员:星星草
关于宏定义
#define MMC_SD_PORT_INI {\
MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT;\
MMC_SD_SCK_PORT |= 1<<MMC_SD_SCK_BIT;\
MMC_SD_MOSI_PORT |= 1<<MMC_SD_MOSI_BIT;\
MMC_SD_MISO_PORT |= 1<<MMC_SD_MISO_BIT;\
\
MMC_SD_CS_DDR |= 1<<MMC_SD_CS_BIT;\
MMC_SD_SCK_DDR |= 1<<MMC_SD_SCK_BIT;\
MMC_SD_MOSI_DDR |= 1<<MMC_SD_MOSI_BIT;\
MMC_SD_MISO_DDR &= ~(1<<MMC_SD_MISO_BIT);\
}
然后在主函数中调用MMC_SD_PORT_INI; /* Port Initialize */
这个是什么意思呢,谁可以回答一下吗?谢谢。。。



------解决方案--------------------
这就是宏定义,定义了MMC_SD_PORT_INI 为后面大括号里面的所有东西。
因为define后面的内容是多条语句,如果要分行写必须用“\”连接。而且很多编译器规定“\”后面不能有任何字符包括空格,否则编译报错。

类似于下面函数的功能,但是没有函数的调用以及出栈入栈的开销:
void MMC_SD_PORT_INI(void)
{MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT;
 MMC_SD_SCK_PORT |= 1<<MMC_SD_SCK_BIT;
 MMC_SD_MOSI_PORT |= 1<<MMC_SD_MOSI_BIT;
 MMC_SD_MISO_PORT |= 1<<MMC_SD_MISO_BIT;

 MMC_SD_CS_DDR |= 1<<MMC_SD_CS_BIT;
 MMC_SD_SCK_DDR |= 1<<MMC_SD_SCK_BIT;
 MMC_SD_MOSI_DDR |= 1<<MMC_SD_MOSI_BIT;
 MMC_SD_MISO_DDR &= ~(1<<MMC_SD_MISO_BIT);
}
 

------解决方案--------------------
同意楼上的说法。补充一下,每种编译器宏定义的规范不一样,建议详细了解下所用编译器所支持平台的C语言规范。
------解决方案--------------------
PORT一般是并行端口,8/16位居多。
MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT; 
意思是在不改变MMC_SD_CS_PORT中其它各比特的情况下,将其第MMC_SD_CS_BIT置1。
例如,MMC_SD_CS_BIT=3,移位3次,则1<<MMC_SD_CS_BIT=00001000B,即第3位(从0位数起)等于1了。
从字符的意思看,用SPI访问SD端口。前4句是将SPI端口的4条线置1;后4句是,将另一个端口的3条线置1,一条线置0。
------解决方案--------------------
探讨
PORT一般是并行端口,8/16位居多。
MMC_SD_CS_PORT |= 1<<MMC_SD_CS_BIT;
意思是在不改变MMC_SD_CS_PORT中其它各比特的情况下,将其第MMC_SD_CS_BIT置1。
例如,MMC_SD_CS_BIT=3,移位3次,则1<<MMC_SD_CS_BIT=00001000B,即第3位(从0位数起)等于1了。
从字符的意思看,用SPI访问S……
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: