Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4481556
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: 嵌入式

2011-06-21 09:34:49

整个工程代码: 3_key_led.rar  
注意事项:
   1. 由于 按键 KEY1 = PA15 KEY2 = PA13 复用了 JIAG 管脚,所以在使用 JLINK 下载程序后,一定要 将JLINK 拔下,这样才不会对 KEY1 KEY2 的输入造成影响。在前几次的实验中,就是没有拔下 JLINK,实验一直没有成功。




注意这里: JTAG 管脚 与 KEY1 复用了





  1. /*
  2. *    Author :     yuweixian
  3. *    Date:         2011.6.21
  4. *    description:
  5. * 开发板上:PD2 ~ LED2
  6. * PA8 ~ LED0
  7. *          PA15 ~ KEY1
  8. * PA13 ~ KEY2
  9. *    修改date:2011.6.21 9:25
  10. *                  按键KEY1 KEY2 控制 LED0 LED2 显示
  11. *
  12. *        注意: 由于JIAG 复用了 PA13 PA15
  13. * 所以用JLINK下载程序后,需要拔下JLINK
  14. * 因为以前都没有拔下JLINK,实验都没能成功                
  15. */

  16. #include "stm32f10x_lib.h"
  17. #include "delay.h"
  18. #include "rcc.h"
  19. #include "led.h"

  20. void key_init(void);
  21. u8 key_scan(void);

  22. void key_init(void)
  23. {
  24.     GPIO_InitTypeDef GPIO_InitStructure;

  25.     //选择引脚 PA13    = KEY2 PA15 = KEY1
  26.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;

  27.     //选择 输入模式为 上拉输入
  28.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

  29.     //初始化 设置PA13 PA15
  30.     GPIO_Init(GPIOA, &GPIO_InitStructure);
  31. }

  32. u8 key_scan(void)
  33. {
  34.     static u8 key_up = 1;// 按键按松开标志
  35.     static u8 ReadValue_k1 = 1;     //PA15 KEY1 读入值
  36.     static u8 ReadValue_k2 = 1;     //PA13 KEY2 读入值
  37.     //读取 k1 k2 的值
  38.     ReadValue_k1 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_15);
  39.     ReadValue_k2 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13);

  40.     /*设置为上拉输入模式,没有按下按键 高电平=1
  41.      当按下按键后,接到地, 读到的值为 低电平=0
  42.     */
  43.     if(key_up&&(ReadValue_k1 == 0) || ReadValue_k2 ==0)//按键按下,低电平
  44.     {
  45.         delay_ms(100);
  46.         key_up = 0;    //按键按下
  47.         if(ReadValue_k1 == 0)return 1;//KEY1 按下,返回1
  48.         if(ReadValue_k2 == 0)return 2;//KEY2 按下,返回2
  49.         
  50.     }
  51.     else if(ReadValue_k1 == 1 || ReadValue_k2 == 1 ) //没有按键按下
  52.         key_up = 1;                                     //重置 按键标志位

  53.     return 3; //没有按键按下, 返回 3
  54. }
  55. int main()
  56. {
  57.     u8 ReadValue = 1;
  58.     u8 t = 0;
  59.     RCC_Configuration();

  60.     delay_init();
  61.     key_init();
  62.     LED_Init();

  63.     while(1)
  64.     {
  65.         t = key_scan();    //不断读取 按键值
  66.         switch(t)
  67.         {
  68.             case 1:     //KEY1按下    PA8~LED0 PD0~LED2 闪烁2次
  69.                     GPIO_SetBits(GPIOD, GPIO_Pin_2); //led 输出1 ,灯灭
  70.                      GPIO_SetBits(GPIOA, GPIO_Pin_8);
  71.                      delay_s(1);
  72.                     GPIO_ResetBits(GPIOD, GPIO_Pin_2); //led 输出0, 灯亮
  73.                  GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  74.                     delay_s(1);
  75.                     GPIO_SetBits(GPIOD, GPIO_Pin_2); //led 输出1 ,灯灭
  76.                      GPIO_SetBits(GPIOA, GPIO_Pin_8);
  77.                      delay_s(1);
  78.                     GPIO_ResetBits(GPIOD, GPIO_Pin_2); //led 输出0, 灯亮
  79.                  GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  80.                     delay_s(1);
  81.                     break;
  82.             case 2: //KEY2按下    LED2 闪烁2次                    
  83.                     GPIO_SetBits(GPIOD, GPIO_Pin_2); //led 输出1 ,灯灭
  84.                      delay_s(1);
  85.                     GPIO_ResetBits(GPIOD, GPIO_Pin_2); //led 输出0, 灯亮
  86.                     delay_s(1);
  87.                     GPIO_SetBits(GPIOD, GPIO_Pin_2); //led 输出1 ,灯灭
  88.                      delay_s(1);
  89.                     GPIO_ResetBits(GPIOD, GPIO_Pin_2); //led 输出0, 灯亮
  90.                     delay_s(1);
  91.                     break;
  92.             default:
  93.                     GPIO_SetBits(GPIOD, GPIO_Pin_2); //led 输出1 ,灯灭
  94.                      GPIO_SetBits(GPIOA, GPIO_Pin_8);
  95.                     break;
  96.         }    
  97.     }

  98.     return 0;
  99. }


阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~