求教一个关于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管脚预先定义宏定义
------解决思路----------------------
宏定义我觉得就挺好的。用起来也很方便啊。
------解决思路----------------------
assert 一般只在 debug 下有用,而且没有看出两者有何关系,
预编译--〉预先编译 --〉发生在编译之前