GPIO代码使用流程(伪代码部分示例)
程序员文章站
2024-02-23 22:18:04
...
- 配置PINMUX (根据芯片手册关于pinmux的部分找到使用pinmux的管脚)
OMA-LP138 数据手册部分截图
//管脚映射省略
//PINMUX 需要使用到的部分
typedef struct{
volatile unsigned int pinmux[20];//我们使用的OMA-LP138的cpu,根据手册写的pinmux一共有20个管脚进行了复用,用数组代表这20个管脚
}
//在OMA-LP138上的管脚结构体
struct OMAP_138PIN{
..............//具体部分省略
}
#define PINMUX(reg,index,value)省略......一部分 //每个人的实现方式不同,这个宏函数,也是根据OMA-LP的芯片手册写出来的,具体的实现大家看一下我的截图应该就明白了,如上图所示reg代表的是:管脚的寄存器地址 index代表的是:管脚的区间功能选择 value代表的是:管脚的使用选择
2.对GPIO所使用的管脚进行初始化
//以ksz8873的芯片的rest功能作为示例,N,M为管脚在原理图上的位置
#define GPIO_OUTPUT_DIR (gpio->pin##n) = ((gpio->dir##n)&(~(0x00000001<<m))) //输出功能举例
int 8873_init(void){
GPIO_OUTPUT_DIR(N,M); //可以通过宏定义的方式对GPIO的接口进行相应的初始化,确定此管脚是输出还是输入使用
}
3.GPIO实际的调用和使用
//已经做好相应的映射,可以根据管脚的地址直接使用
#GPIO_SET(N,M) (gpio->(setpin##N))=(0x00000001<<M)
#GPIO_CLR(N,M) (gpio->(clrpin##N))=(0x00000001<<M)
//拉低电平同上
GPIO_SET(N,M); //拉高电平
GPIO_OUT(N,M); //拉低电平
上一篇: c#实现网页图片提取工具代码分享
推荐阅读