1. #include "key4v4.h"
  2. #include "stm32f10x.h"
  3. #include "delay.h"
  4.  
  5. /*
  6. PA4-L1 PA0-R1
  7. PA5-L2 PA1-R2
  8. PA6-L3 PA2-R3
  9. PA7-L4 PA3-R4
  10. */
  11.  
  12. #define R1_L GPIO_ResetBits(GPIOA,GPIO_Pin_0)
  13. #define R2_L GPIO_ResetBits(GPIOA,GPIO_Pin_1)
  14. #define R3_L GPIO_ResetBits(GPIOA,GPIO_Pin_2)
  15. #define R4_L GPIO_ResetBits(GPIOA,GPIO_Pin_3)
  16.  
  17. #define R1_H GPIO_SetBits(GPIOA,GPIO_Pin_0)
  18. #define R2_H GPIO_SetBits(GPIOA,GPIO_Pin_1)
  19. #define R3_H GPIO_SetBits(GPIOA,GPIO_Pin_2)
  20. #define R4_H GPIO_SetBits(GPIOA,GPIO_Pin_3)
  21.  
  22. #define Scanf_R1 R1_L,R2_H,R3_H,R4_H
  23. #define Scanf_R2 R1_H,R2_L,R3_H,R4_H
  24. #define Scanf_R3 R1_H,R2_H,R3_L,R4_H
  25. #define Scanf_R4 R1_H,R2_H,R3_H,R4_L
  26.  
  27. #define L1_Value GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)
  28. #define L2_Value GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)
  29. #define L3_Value GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)
  30. #define L4_Value GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)
  31.  
  32. int Scanf_Keys()
  33. {
  34. int return_value=-1;
  35. //R1-->Low,R2-->High,R3-->High,R4-->High
  36. //1,4,7,*
  37. Scanf_R1;
  38. if(L1_Value==0)
  39. {
  40. delay_ms(20);
  41. if(L1_Value==0)
  42. {
  43. return_value=1;
  44. }
  45. }
  46.  
  47. if(L2_Value==0)
  48. {
  49. delay_ms(20);
  50. if(L2_Value==0)
  51. {
  52. return_value=4;
  53. }
  54. }
  55.  
  56. if(L3_Value==0)
  57. {
  58. delay_ms(20);
  59. if(L3_Value==0)
  60. {
  61. return_value=7;
  62. }
  63. }
  64.  
  65. if(L4_Value==0)
  66. {
  67. delay_ms(20);
  68. if(L4_Value==0)
  69. {
  70. return_value=10;
  71. }
  72. }
  73.  
  74. //R2-->High,R2-->Low,R3-->High,R4-->High
  75. //2,5,8,0
  76. Scanf_R2;
  77. if(L1_Value==0)
  78. {
  79. delay_ms(20);
  80. if(L1_Value==0)
  81. {
  82. return_value=2;
  83. }
  84. }
  85.  
  86. if(L2_Value==0)
  87. {
  88. delay_ms(20);
  89. if(L2_Value==0)
  90. {
  91. return_value=5;
  92. }
  93. }
  94.  
  95. if(L3_Value==0)
  96. {
  97. delay_ms(20);
  98. if(L3_Value==0)
  99. {
  100. return_value=8;
  101. }
  102. }
  103.  
  104. if(L4_Value==0)
  105. {
  106. delay_ms(20);
  107. if(L4_Value==0)
  108. {
  109. return_value=0;
  110. }
  111. }
  112.  
  113. //R2-->High,R2-->High,R3-->Low,R4-->High
  114. //3,6,9,#
  115. //3,6,9,15
  116. Scanf_R3;
  117. if(L1_Value==0)
  118. {
  119. delay_ms(20);
  120. if(L1_Value==0)
  121. {
  122. return_value=3;
  123. }
  124. }
  125.  
  126. if(L2_Value==0)
  127. {
  128. delay_ms(20);
  129. if(L2_Value==0)
  130. {
  131. return_value=6;
  132. }
  133. }
  134.  
  135. if(L3_Value==0)
  136. {
  137. delay_ms(20);
  138. if(L3_Value==0)
  139. {
  140. return_value=9;
  141. }
  142. }
  143.  
  144. if(L4_Value==0)
  145. {
  146. delay_ms(20);
  147. if(L4_Value==0)
  148. {
  149. return_value=15;
  150. }
  151. }
  152.  
  153. //R2-->High,R2-->High,R3-->High,R4-->Low
  154. //a,b,c,d
  155. //a,b,c,h
  156. Scanf_R4;
  157. if(L1_Value==0)
  158. {
  159. delay_ms(20);
  160. if(L1_Value==0)
  161. {
  162. return_value=11;
  163. }
  164. }
  165.  
  166. if(L2_Value==0)
  167. {
  168. delay_ms(20);
  169. if(L2_Value==0)
  170. {
  171. return_value=12;
  172. }
  173. }
  174.  
  175. if(L3_Value==0)
  176. {
  177. delay_ms(20);
  178. if(L3_Value==0)
  179. {
  180. return_value=13;
  181. }
  182. }
  183.  
  184. if(L4_Value==0)
  185. {
  186. delay_ms(20);
  187. if(L4_Value==0)
  188. {
  189. return_value=14;
  190. }
  191. }
  192.  
  193. return return_value;
  194. }
  195.  
  196. void Scanf_Init()
  197. {
  198. GPIO_InitTypeDef GPIO_InitStructure;
  199. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
  200.  
  201. //input
  202. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  203. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  204. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  205. GPIO_Init(GPIOA,&GPIO_InitStructure);
  206.  
  207. //output
  208. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
  209. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  210. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  211. GPIO_Init(GPIOA,&GPIO_InitStructure);
  212.  
  213. }

/*
3f,6 ,5b,4f,66,6d,7d,7 ,7f,6f,27,4f,7f,27,37,47 1b
0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,e ,a ,b ,c ,h ,f
0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,* ,a ,b ,c ,d ,#
0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10,11,12,13,14,15 16
0x40='_'
*/

  

key 4v4的更多相关文章

  1. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  2. Dapper.Contrib:GetAsync<T> only supports an entity with a [Key] or an [ExplicitKey] property

    异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key ...

  3. Redis百亿级Key存储方案(转)

    1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...

  4. 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值

    一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...

  5. CentOS:ECDSA host key "ip地址" for has changed and you have requested strict checking(转)

    原文地址:http://blog.csdn.net/ausboyue/article/details/52775281 Linux SSH命令错误:ECDSA host key "ip地址& ...

  6. webstorm license key

    JetBrains WebStorm注册码 UserName: William License Key : ===== LICENSE BEGIN ===== 45550-12042010 00001 ...

  7. VS2015企业版本(安装包+key)+ .NET Reflector 9.0

    Reflector9.0系下载:https://yunpan.cn/cMQj9zWbffSqy  访问密码 55eb VS2015中文企业版: http://pan.baidu.com/s/1eRIo ...

  8. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  9. SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能(六)

    前言 前面几节都是讲的基础内容,本节我们讲讲索引性能优化,当对大数据进行处理时首先想到的就是索引,一旦遇到这样的问题则手忙脚乱,各种查资料,为何平常不扎实基本功呢,我们由浅入深,简短的内容,深入的理解 ...

随机推荐

  1. Hbase之遍历获取数据

    import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import ...

  2. Python核心编程-闭包

    百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...

  3. VI打开和编辑多个文件的命令 分屏操作

    VI打开和编辑多个文件的命令 可分两种情况: 1.在同一窗口中打开多个文件: vi file1 file2 file3:n  切换到下一个文件 (n=next):N  切换到上一个文件 2.在不同窗口 ...

  4. sap 中怎样把非限制库存转为销售订单库存?

    把非限制库存转为销售订单库存: MB1B 移动类型413 把销售订单库存转为非限制库存: MB1B移动类型411 E 切记!

  5. rsa加密--选择padding模式需要注意的问题。。。

    最近在做一个项目中需要,在android对一个密码字段首先进行 一次md5加密后再进行一次rsa加密,然后把加密的结果通过 json协议传输给nginx服务器进行解密.在android中,可以直接 使 ...

  6. JavaScript学习笔记(十二) 回调模式(Callback Pattern)

    函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...

  7. Ubuntu 安装 Redis

    1. 下载并安装 redis 2.6.16版 sudo mkdir /usr/local/src/Redis cd /usr/local/src/Redis sudo wget http://down ...

  8. 在excel单元格中提取信息

    平时在excel中处理数据的时候,肯定会遇到在单元格提取信息的情况,比如在地址中提取省.市.地区等,如果数据源内容规整的话,可以直接使用left().right().mid()等函数直接提取,但是大多 ...

  9. Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(一)

    pom.xml配置 <dependencies> <!-- hibernate begin --> <dependency> <groupId>org. ...

  10. javaNIO学习

    Buffer其实就是是一个容器对象,它包含一些要写入或者刚读出的数据.在NIO中加入Buffer对象,体现了新库与原I/O的一个重要区别.在面向流的I/O中,您将数据直接写入或者将数据直接读到Stre ...