通用IO(一)
来源:互联网 发布:手机流程图中文软件 编辑:程序博客网 时间:2024/06/17 22:00
前言
学习zigbee,就从最简单的开始。我是从cc2530这块单片机学起的。
废话不多说,我从最简单的io说起。
这块单片机的IO分为通用IO和外设IO。
什么是通用I/O呢?
我简单的理解为通用I/O是只有输入输出0和1之分的一种IO模式。而外设IO指能实现多,复杂的功能叫做外设IO。当然这种说法肯定是不标准的,具体的说法还请大家查相关手册。
我博客只教大家怎么用!
通用I/O的使用
I/O无非就是配置寄存器。首先我们查看得知通用I/O常用的有三个寄存器,分别是功能寄存器、方向寄存器、配置寄存器。
既然IO有分两种。那么我们就需要设置指定的IO引脚是什么类型的。
已知0为设置为通用IO,1为外设IO
功能寄存器PxSEL的配置
例如我们要设置P0_1口为通用IO,只需写以下代码
P0SEL &=~(1<<1);
如果是外设IO呢?我后面也会细讲,这里讲个大概的
P0SEL |=1<<1;
方向寄存器PxDIR的配置
这个是干嘛用呢?其实也非常简单,就是设置该IO口是输入还是输出用的。所以它的配置也相当简单
/*P0_1设置为输入IO引脚*/P0DIR&=~(1<<1);/*P0_1设置为输出IO引脚*/P0DIR|=1<<1;
是不是很容易啊!
通过上面两个寄存器的设置就可以实现简单的LED灯闪烁的功能了。
大概思路是这样子的,如何控制灯亮呢?给它一个高电平/低电平,这里我假设是高电平,怎么给它高电平呢?首先配置IO口是通用IO还是外设IO,由于此灯不需要复杂的功能,所以我们只需要将它设置为通用IO即可。接着就是它为输出模式就好了
/*定义LED1*/#define LED1 P0_1void IOinit(){ P0SEL&=~(1<<1);//配置通用IO PODIR |=1<<1;//配置输出模式}void LEDinit(){ LED1=1;//LED初始化}void main(){ IOinit(); LEDinit(); while(1) { LED1=~LED1;//让灯闪烁 Delay(1000); }}
通过上面的小例子是否很快明白呢?但我们还有一个寄存器没有讲,那就是配置寄存器,它有什么用呢?请继续关注我的博客,下期我们我们将了解它。
授人以鱼不如授人以渔,这里我就不发布全部源码了,大家明白思路就可以了。
0 0
- 通用IO(一)
- 通用IO(二)
- 通用单链表(一)
- 【apache-commons】一 io包 它是一个文件和IO流操作的源码通用工具包
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript 通用库(一)
- JavaScript通用库(一)
- JavaScript通用库(一)
- JavaScript 通用库(一)
- JavaScript 通用库(一)
- Java IO(一)
- IO (一)
- Ubuntu 14.04 安装与配置 Git
- git--基础【1】
- 【android】Android Studio修改代码提示快捷键
- Mongodb3.4分片搭建
- 对json按某个键的值进行排序
- 通用IO(一)
- 普通的form提交、ajax提交和jQuery的ajax的form提交
- Oracle批量导入100万条数据不到1秒
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- 前端工作面试问题
- 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
- centos安装postgis
- x64传参约定
- ArcGIS Engine基础开发教程之地图查询