|
楼主 |
发表于 2013-10-13 16:40:56
|
显示全部楼层
本帖最后由 Gorgon_Meducer 于 2013-10-13 16:56 编辑
STM32_Study 发表于 2013-10-13 16:32
楼上的几位网友的观点,跟我说的都是一样的,我们都是觉得没有必要用 IO_CFG 这样的宏,因为这个宏没有带 ...
哈哈哈……是的……直接展开……
你说的一句话我觉得合情合理“程序员何必为难程序员”,这句话让我觉得非常感动……
请听我解释下,我一直认为,程序望文生义是最重要的,IO_CFG 再清楚不过了……但我忽略了,陌生的东西
比如语法会让人不安,而这种不安是人最害怕的东西,不安就会带来急躁,不信任,等等……所以,我从这个
事情上学到,以后例子代码一定会提供两个版本——完全绽开的版本,和用宏封装的版本。因为我相信,除了
会对这种代码背后隐藏的东西感到不安的人存在,也会有习惯性用黑盒子的人存在,二者我都应该尊重。
最后也请大家尊重我的努力,更猛烈的拍砖吧!
以下是展开形式,是不是亲切了很多呢?
- do {
- io_cfg_t tCFG[] = {
- {PA1, IO_WORKS_AS_SPI0_MOSI & IO_WRITE_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA1, IO_WORKS_AS_SPI1_MOSI & IO_READ_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA2, IO_WORKS_AS_SPI0_SCK & IO_WRITE_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA2, IO_WORKS_AS_SPI1_SCK & IO_READ_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA3, IO_WORKS_AS_SPI0_CS & IO_WRITE_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA3, IO_WORKS_AS_SPI1_CS & IO_READ_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA4, IO_WORKS_AS_SPI0_MISO & IO_READ_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- {PA4, IO_WORKS_AS_SPI1_MISO & IO_WRITE_ONLY, IO_PULL_UP | IO_RAW_LOOP_BACK},
- };
- IO.Config(tCFG, UBOUND(tCFG))
- } while(0);
复制代码 |
|