[新手园地] 【3P】 lesson2-key

[复制链接]
 楼主| zhoubojay 发表于 2011-10-20 20:39 | 显示全部楼层 |阅读模式
本帖最后由 zhoubojay 于 2011-10-20 20:40 编辑

参考论坛上的自己改动一下,初学可以看看
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /* */
  3. /* Copyright(c) 2011 Nuvoton Technology Corp. All rights reserved. */
  4. /* 按下KEY2键,按一下第一个lED亮,按两下第二个亮,第一个灭,按第5下全亮,第6下全灭 */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. #include<stdio.h>
  7. #include"NUC1XX.h"
  8. //#include"variables.h"
  9. #include"Driver\DrvSYS.h"
  10. #include"Driver\DrvGPIO.h"

  11. void Set_System(void);
  12. void RCC_Configuration(void);
  13. void GPIO_Configuration(void);
  14. void delay_ms(uint32_t count);

  15. void Set_System(void)
  16. {
  17. RCC_Configuration(); //配置系统时钟

  18. GPIO_Configuration(); //配置GPIO
  19. }

  20. void RCC_Configuration(void)
  21. {
  22. UNLOCKREG();
  23. DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);
  24. delay_ms(100);
  25. }

  26. void GPIO_Configuration(void)
  27. {
  28. DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT);
  29. DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT);
  30. DrvGPIO_Open(E_GPA,4,E_IO_OUTPUT);
  31. DrvGPIO_Open(E_GPA,5,E_IO_OUTPUT);

  32. DrvGPIO_Open(E_GPB,14,E_IO_INPUT);
  33. DrvGPIO_Open(E_GPB,15,E_IO_INPUT);
  34. }

  35. void delay_ms(uint32_t count)
  36. {
  37. uint32_t i,j;
  38. for(i=count;i>0;i--)
  39. for(j=2395;j>0;j--);
  40. }

  41. int main(void)
  42. {
  43. uint8_t flag=0;
  44. uint8_t count=0;
  45. Set_System();
  46. while(1)
  47. {
  48. if(DrvGPIO_GetBit(E_GPB,14)==0)
  49. delay_ms(30);
  50. if(DrvGPIO_GetBit(E_GPB,14)==0)
  51. flag=1;

  52. if(flag)
  53. {
  54. if(DrvGPIO_GetBit(E_GPB,14)==1)
  55. {
  56. flag=0;
  57. count++;
  58. }
  59. }
  60. if(count>=7) count=1;
  61. switch(count)
  62. {
  63. case 1:
  64. DrvGPIO_ClrBit(E_GPA,2); break;
  65. case 2: DrvGPIO_ClrBit(E_GPA,3);
  66. DrvGPIO_SetBit(E_GPA,2); break;
  67. case 3: DrvGPIO_ClrBit(E_GPA,4);
  68. DrvGPIO_SetBit(E_GPA,3); break;
  69. case 4: DrvGPIO_ClrBit(E_GPA,5);
  70. DrvGPIO_SetBit(E_GPA,4); break;
  71. case 5:
  72. DrvGPIO_ClrBit(E_GPA,2);
  73. DrvGPIO_ClrBit(E_GPA,3);
  74. DrvGPIO_ClrBit(E_GPA,4);
  75. DrvGPIO_ClrBit(E_GPA,5);
  76. break;
  77. case 6:
  78. DrvGPIO_SetBit(E_GPA,2);
  79. DrvGPIO_SetBit(E_GPA,3);
  80. DrvGPIO_SetBit(E_GPA,4);
  81. DrvGPIO_SetBit(E_GPA,5);
  82. break;

  83. default:break;
  84. }
  85. }
  86. }
hotpower 发表于 2011-10-21 01:12 | 显示全部楼层
至少要注解或写几句心得吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

595

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部