ARM裸机学习(二)
来源:互联网 发布:淘宝抢购怎么看名次 编辑:程序博客网 时间:2024/05/21 19:39
一、底层函数解析
1、端口初始化函数
typedef struct{U32 pinx;GPIO_MODE mode;GPIO_UDP udp;}GPIO_INIT_typedef; (端口针脚号、端口模式、上拉下拉模式)
void GPIO_INIT(GPIO_PORT portx,GPIO_INIT_typedef gpio_init) //传递进来的是端口号、以及需要初始化的内容(端口模式、上拉下拉模式){ int i;for(i=0;i<32;i++){if((gpio_init.pinx && (1<<i))==(1<<i)) //找到所需要初始化的针脚号{if(portx==GPIOA) //因为A口与其他端口的模式有差别所以单独考虑{if(gpio_init.mode==MODE_GPCON_OUT) //接下来根据不同模式进行初始化{PORT_BASE[portx]->GPCON &=~(1<<i);}else if(gpio_init.mode==MODE_GPCON_ALT1){PORT_BASE[portx]->GPCON |=(1<<i);}}else //一般情况如何初始化{PORT_BASE[portx]->GPCON &=~(0x3<<(2*i)); PORT_BASE[portx]->GPCON |=(gpio_init.mode<<(2*i));PORT_BASE[portx]->GPUDP &=~(0x3<<(2*i));PORT_BASE[portx]->GPUDP |=(gpio_init.udp<<(2*i));}}}}
const GPIO PORT_BASE[7]={GPIOA_BASE,GPIOB_BASE,GPIOC_BASE,GPIOD_BASE,GPIOE_BASE,GPIOF_BASE,GPIOG_BASE}; //注意:一定要const,
//要不然数组里的东西会全部被更改掉
2、写入函数
void GPIO_write(GPIO_PORT portx,U32 pinx,BIT_typedef bit) //传递端口号、针脚号、高低电频{if(bit==BIT_SET) //判断摸个端口的对应针脚号是否置高电平{PORT_BASE[portx]->GPDAT |=pinx; //置高位}else if(bit==BIT_RESET){PORT_BASE[portx]->GPDAT &=~pinx;}}3、读取函数
BIT_typedef GPIO_read(GPIO_PORT portx,U32 pinx) //传递端口号、针脚号{if((PORT_BASE[portx]->GPDAT & pinx)==pinx) //查找指定端口的指定针脚号{return BIT_SET; //返回该位的电平}elsereturn BIT_RESET;}
阅读全文
0 0
- ARM裸机学习(二)
- 二.ARM裸机学习之S5PV210刷机
- 学习arm裸机程序
- arm裸机学习告一段落
- linux_I2C学习二(裸机)
- 朱老师ARM裸机学习笔记(二):S5PV210的内存映射
- 朱老师ARM裸机学习笔记(二):S5PV210的内存映射
- 朱老师ARM裸机学习笔记(六):ARM汇编
- arm-linux-gcc 裸机程序开发(二)
- arm-linux-gcc 裸机程序开发(二)
- arm-linux-gcc 裸机程序开发(二)
- arm裸机代码的学习
- ARM裸机部分学习记录
- s3c6410裸机学习笔记(二)--中断
- 一.ARM裸机学习之ARM汇编
- ARM嵌入式linux系统学习之裸机(一)
- 朱老师ARM裸机学习笔记(一):计算机基础知识
- ARM先生对于裸机学习的看法
- GPU版基数排序(radix sort)
- Android SQLLite数据库
- 人工神经网络之BP神经网络模型
- *Manacher
- 计算机端口
- ARM裸机学习(二)
- Android Studio常用的快捷键
- 洛谷Oj-税收与补贴问题-模拟
- centos6.9 vsftp 服务器安装
- 高斯消元
- JZOJ__Day 1【NOIP普及模拟】MATRIX
- Maven学习(一)
- 搭建maven
- C语言必知必会的题目整理