当前位置: 代码迷 >> 单片机 >> 满分请问关于IO操作的方法
  详细解决方案

满分请问关于IO操作的方法

热度:52   发布时间:2016-04-28 15:34:02.0
满分请教关于IO操作的方法
求教一个关于IO操作的问题

因为考虑到嵌入式开发硬件的管脚经常需要修改
现在用的是直接去操作IO,感觉每次改都要改好多地方,想用函数的方法去封装这些IO操作,到时候管脚修改只要修改函数里的IO这一个地方就好了。

想问下有没其他的方法?


顺求诸如,有限状态机这样的一些嵌入式常用的一些技巧的书。
------解决思路----------------------
不知道#define满不满足楼主的要求

.h

#define LCD_DI E_GPB,9
#define LCD_RW E_GPB,10
#define LCD_EN E_GPB,11
//8根数据线接的是PA的低8位
//#define LCD_DB E_GPA
#define LCD_DB0 E_GPA,1
#define LCD_DB1 E_GPA,2
#define LCD_DB2 E_GPA,3
#define LCD_DB3 E_GPA,4
#define LCD_DB4 E_GPA,5
#define LCD_DB5 E_GPA,6
#define LCD_DB6 E_GPA,7
#define LCD_DB7 E_GPA,8


.c

void lcd192_64_init(void)
{
DrvGPIO_Open(LCD_RW,E_IO_OUTPUT);
DrvGPIO_Open(LCD_EN,E_IO_OUTPUT);
DrvGPIO_Open(LCD_DI,E_IO_OUTPUT);
DrvGPIO_Open(LCD_CS1,E_IO_OUTPUT);
DrvGPIO_Open(LCD_CS2,E_IO_OUTPUT);
DrvGPIO_Open(LCD_CS3,E_IO_OUTPUT);
DrvGPIO_Open(LCD_RST,E_IO_OUTPUT);

DrvGPIO_Open(LCD_DB0,E_IO_QUASI);
DrvGPIO_Open(LCD_DB1,E_IO_QUASI);
DrvGPIO_Open(LCD_DB2,E_IO_QUASI);
DrvGPIO_Open(LCD_DB3,E_IO_QUASI);
DrvGPIO_Open(LCD_DB4,E_IO_QUASI);
DrvGPIO_Open(LCD_DB5,E_IO_QUASI);
DrvGPIO_Open(LCD_DB6,E_IO_QUASI);
DrvGPIO_Open(LCD_DB7,E_IO_QUASI);

DrvGPIO_ClrBit(LCD_EN);

lcd192_64_reset();
lcd192_64_write(CS1,true,LCD_COMMAND_ON);
lcd192_64_write(CS1,true,LCD_COMMAND_ON);
lcd192_64_write(CS2,true,LCD_COMMAND_ON);
lcd192_64_write(CS3,true,LCD_COMMAND_ON);
delayus(20000);
}


如果改线了直接在.h文件中改下就行了
------解决思路----------------------
宏定义应该可以实现吧,对每个端口的IO管脚预先定义宏定义
------解决思路----------------------
宏定义我觉得就挺好的。用起来也很方便啊。
------解决思路----------------------
引用:
引用:
不知道#define满不满足楼主的要求

.h

C/C++ code

#define LCD_DI    E_GPB,9
#define LCD_RW    E_GPB,10
#define LCD_EN    E_GPB,11
//8根数据线接的是PA的低8位
//#define LCD_DB    E_GPA
#define LCD_DB……


assert 一般只在 debug 下有用,而且没有看出两者有何关系,

预编译--〉预先编译 --〉发生在编译之前
  相关解决方案