BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / smartcar / #155同步于 2016/10/27
Smartcar机器人发帖

K60系列教程——IO操作

Ncer
2016/10/27镜像同步0 回复
本教程以应用已经编写好的K60底层为目的,不会过多涉及底层的编写。 如果有同学对底层感兴趣的话,欢迎另外发帖讨论。 关于IO 所谓IO,即Input/Output(输入输出设备),单片机通过控制IO口来控制外设、传递信号。(比如开发板上的LED灯就是一种外设) 单片机能通过设置某些寄存器,来使IO口输出高低电平,或者使IO口作为输入,获取外设的输入信号。 一个简单的实例 这是开发板上关于LED的一部分原理图。其中,P8为一个开关(我们让大家焊成插针,用跳线帽连接)。 将2、3连接在一起,即将3接到了3.3V。其中,C8为单片机的一个IO口。 由基本的电路知识我们可以知道,此时C8若输出低电平,LED1即可发光。 因此,我们可以在main函数中,这样写: void main() { //GPO gpio_init (PORTC, 8, GPO, LOW); //初始化并点亮二极管 while(1); //使单片机进入循环。 } 我们可以在IAR中通过,右键gpio_init,选择go_to_definition of gpio_init 来跳转到到他的定义文件: /* ************************************************************************ * 函数名称:gpio_init * 功能说明:初始化gpio * 参数说明:PORTx 端口号(PORTA,PORTB,PORTC,PORTD,PORTE) * n 端口引脚 * IO 引脚方向,0=输入,1=输出 * data 输出初始状态,0=低电平,1=高电平 (对输入无效) * 函数返回:无 * 修改时间:2012-3-15 * 备 注: ************************************************************************ */ void gpio_init (PORTx portx, u8 n,GPIO_CFG cfg,u8 data) 他怎么实现的我们不需要知道,只要知道如何调用就行了。(有兴趣的可以进.c文件看看具体实现)按照各个参数填入调用即可。 其中,引脚方向即设置IO口是输出还是输入。输入就是此时单片机不控制这个IO口的高低电平,由外设控制。 此时,我们已经将C8初始化为低电平。若一切正常,将程序烧写进单片机,应该可以看到LED1已经点亮了。 如果我们需要在程序中改变它的状态,可以通过gpio_set (PORTx portx, u8 n, u8 data)来改变。 注意:单片机对IO口进行操作前,必须先调用初始化函数(即gpio_init)。(事实上,大部分模块使用前都必须初始化) IO的其他函数,请参见GPIO.c或者GPIO.h。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。