注册 登录
查看: 820|回复: 6

[K60] 按键功能模块

[复制链接]
发表于 2013-7-28 21:07:00 | 显示全部楼层 |阅读模式
你们官方给的K60按键例程程序,按键初始化程序 gpio_init((PORTx)(key>>5),key & 0x1F,GPI_UP,0);中key>>5 我怎么理解不了呢,感觉有点多余呢,你们的程序按键输入端口应该是PTD10对吧,key>>5是把端口左移了5位,应该变为PTD5才对的呀,但我测试了下按键端口还是PTD10, 这是为什么呢   key>>5到底在整个函数中起到什么作用呢   
回复

使用道具 举报

发表于 2013-7-29 23:17:22 | 显示全部楼层
这代码,一开始看,我也是糊涂的,后面问山外哥才知道,我C语言没学好

key >> 5 等效于 key/32
而 PTD10 的值 为 4 *32 + 10 (不相信的,可以printf 打印出来看看,这个是利用枚举自动编号的功能,自己看看枚举的相关资料)

PTD10 >> 5 结果为 4 ,即PORTA,PORTB,PORTC,PORTD 里的 PORTD

key & 0x1F ,等效于 key % 32
PTD10 & 0x1F ,结果为 10
回复 支持 反对

使用道具 举报

发表于 2013-7-29 23:18:36 | 显示全部楼层
key>>5 ,其实就是求 PORT 模块 ,(PTD10 >> 5)== PORTD
回复 支持 反对

使用道具 举报

发表于 2013-7-29 23:32:04 | 显示全部楼层
小微讲了原理了,这里补充一下 枚举的知识:

c语言枚举类型详解 - C语言入门扫盲资料 - 山外-vcan123论坛 http://www.vcan123.com/forum.php ... ;tid=563&extra=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-30 10:57:03 | 显示全部楼层
玄来玄去 发表于 2013-7-29 23:32
小微讲了原理了,这里补充一下 枚举的知识:

c语言枚举类型详解 - C语言入门扫盲资料 - 山外-vcan123论坛 ...

很实用,太谢谢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-30 10:59:03 | 显示全部楼层
微粒子 发表于 2013-7-29 23:17
这代码,一开始看,我也是糊涂的,后面问山外哥才知道,我C语言没学好

key >> 5 等效于 key/32

很不错,懂了!
回复 支持 反对

使用道具 举报

发表于 2013-7-30 12:53:20 | 显示全部楼层
微粒子 发表于 2013-7-29 23:17
这代码,一开始看,我也是糊涂的,后面问山外哥才知道,我C语言没学好

key >> 5 等效于 key/32

呵呵,利用枚举的自动编号功能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部