[菜农助学交流] CN(菜鸟)之250助学板GPIO点灯小练习

[复制链接]
 楼主| chinacn1989 发表于 2011-8-29 09:00 | 显示全部楼层 |阅读模式
本帖最后由 chinacn1989 于 2011-8-29 10:09 编辑

这是我第一次发的帖子,希望大家多多指教哈!
首先写个小小的总结:
    这次主要是为了测试下板子,和熟悉下板子的GPIO的基本应用。程序很简单,只用了IO,中断,其实中断可以不需要用的。但是为了测试,就试试了....
    先说说这次使用的点点小看法吧,本次小程序用的是库操作。所以程序很容易理解。但是有个问题就是我比如用的IO比较多的时候,使能几个IO,就会调用几次DRV_GPIO_open的程序,但是我用寄存器就只需要一句就够了!有时候觉得这样可能能提高程序的效率吧,虽然现在都还不清楚怎么去提高程序的效率,只是胡乱来写的。没有一点的概念...
希望大家多多指教哈。
    还有就是程序中遇到的问题,刚刚开始用的时候,直接用中断发现有时候不能达到理想的效果,后来发现是应该是按键抖动造成的。使能IO的防反跳。效果比较明显,基本上没有什么问题了。由于现在用的东西比较少,所以就没能发现什么具体的问题,但是我会先把裸板上能用的都自己试试。(包括AD,1820,串口等等这些基本的东东)
到时候在和大家分享...
这次只是开始....
未完待续...
程序如下(请大家有时间多提点问题。谢谢...):
  1. #include"nuc1xx.h"
  2. #include"drvgpio.h"
  3. #include"drvtimer.h"

  4. int n;
  5. void delay(int i) //延时小程序
  6. {
  7. unsigned int j,k;
  8. for(j=0;j<i;j++)
  9. for(k=0;k<600;k++);
  10. }
  11. void deng1() //1 2 3 4(点亮方式)
  12. {
  13. DrvGPIO_ClrBit(E_GPA,2);delay(200);
  14. DrvGPIO_SetBit(E_GPA,2);delay(200);
  15. DrvGPIO_ClrBit(E_GPA,3);delay(200);
  16. DrvGPIO_SetBit(E_GPA,3);delay(200);
  17. DrvGPIO_ClrBit(E_GPA,4);delay(200);
  18. DrvGPIO_SetBit(E_GPA,4);delay(200);
  19. DrvGPIO_ClrBit(E_GPA,5);delay(200);
  20. DrvGPIO_SetBit(E_GPA,5);delay(200);
  21. }
  22. void deng2() //1 12 123 1234 234 34 4
  23. {
  24. DrvGPIO_ClrBit(E_GPA,2);
  25. delay(600);
  26. DrvGPIO_ClrBit(E_GPA,3);
  27. delay(600);
  28. DrvGPIO_ClrBit(E_GPA,4);
  29. delay(600);
  30. DrvGPIO_ClrBit(E_GPA,5);
  31. delay(600);

  32. DrvGPIO_SetBit(E_GPA,2);
  33. delay(600);
  34. DrvGPIO_SetBit(E_GPA,3);
  35. delay(600);
  36. DrvGPIO_SetBit(E_GPA,4);
  37. delay(600);
  38. DrvGPIO_SetBit(E_GPA,5);
  39. delay(600);
  40. }
  41. void deng3() //24 13
  42. {
  43. DrvGPIO_ClrBit(E_GPA,2);
  44. DrvGPIO_ClrBit(E_GPA,4);
  45. DrvGPIO_SetBit(E_GPA,3);
  46. DrvGPIO_SetBit(E_GPA,5);
  47. delay(800);
  48. DrvGPIO_ClrBit(E_GPA,3);
  49. DrvGPIO_ClrBit(E_GPA,5);
  50. DrvGPIO_SetBit(E_GPA,2);
  51. DrvGPIO_SetBit(E_GPA,4);
  52. delay(800);
  53. }
  54. void deng4() //14 23
  55. {
  56. DrvGPIO_ClrBit(E_GPA,2);
  57. DrvGPIO_ClrBit(E_GPA,5);
  58. DrvGPIO_SetBit(E_GPA,3);
  59. DrvGPIO_SetBit(E_GPA,4);
  60. delay(800);
  61. DrvGPIO_ClrBit(E_GPA,3);
  62. DrvGPIO_ClrBit(E_GPA,4);
  63. DrvGPIO_SetBit(E_GPA,2);
  64. DrvGPIO_SetBit(E_GPA,5);
  65. delay(800);
  66. }
  67. void deng5() //23 45
  68. {
  69. DrvGPIO_ClrBit(E_GPA,2);
  70. DrvGPIO_ClrBit(E_GPA,3);
  71. DrvGPIO_SetBit(E_GPA,4);
  72. DrvGPIO_SetBit(E_GPA,5);
  73. delay(800);
  74. DrvGPIO_ClrBit(E_GPA,4);
  75. DrvGPIO_ClrBit(E_GPA,5);
  76. DrvGPIO_SetBit(E_GPA,2);
  77. DrvGPIO_SetBit(E_GPA,3);
  78. delay(800);
  79. }
  80. void deng6() // 1 4 2 3
  81. {
  82. DrvGPIO_ClrBit(E_GPA,2);delay(200);
  83. DrvGPIO_SetBit(E_GPA,2);delay(200);
  84. DrvGPIO_ClrBit(E_GPA,5);delay(200);
  85. DrvGPIO_SetBit(E_GPA,5);delay(200);
  86. DrvGPIO_ClrBit(E_GPA,3);delay(200);
  87. DrvGPIO_SetBit(E_GPA,3);delay(200);
  88. DrvGPIO_ClrBit(E_GPA,4);delay(200);
  89. DrvGPIO_SetBit(E_GPA,4);delay(200);
  90. }
  91. void EINT0Callback(void) //按键中断的n++程序,n的值不同,闪灯的小程序不同。
  92. {
  93. DrvGPIO_SetBit(E_GPA,2);
  94. DrvGPIO_SetBit(E_GPA,3);
  95. DrvGPIO_SetBit(E_GPA,4);
  96. DrvGPIO_SetBit(E_GPA,5);
  97. n++;
  98. if(n>5)
  99. n=0;
  100. }
  101. main()
  102. {
  103. DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT); //配置GPA2345为输出口
  104. DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT);
  105. DrvGPIO_Open(E_GPA,4,E_IO_OUTPUT);
  106. DrvGPIO_Open(E_GPA,5,E_IO_OUTPUT);
  107. DrvGPIO_EnableEINT0(E_IO_FALLING,E_MODE_EDGE,EINT0Callback); //使能外部中断0
  108. DrvGPIO_EnableDebounce(E_GPB,14); //使能中断防反跳模式

  109. while(1) // 亮灯的循环
  110. {
  111. switch(n)
  112. {
  113. case 0:deng1();break;
  114. case 1:deng2();break;
  115. case 2:deng3();break;
  116. case 3:deng4();break;
  117. case 4:deng5();break;
  118. case 5:deng6();break;
  119. default :break;
  120. }
  121. }
  122. }
hotpower 发表于 2011-8-29 09:41 | 显示全部楼层
可以操作寄存器或用红杏直接一次设置。
争取中午加入选美阵营。还有两天时间投票。
lixiaoxu2meng 发表于 2011-8-29 09:47 | 显示全部楼层
帮顶 加油:lol
 楼主| chinacn1989 发表于 2011-8-29 10:04 | 显示全部楼层
2# hotpower
大叔啊,
我的不是下一期吗?
呵呵...
怎么是这期啊!
有鸭梨啊。
 楼主| chinacn1989 发表于 2011-8-29 10:07 | 显示全部楼层
红杏还没有用过,先弄基础...
然后在...
出墙!
hotpower 发表于 2011-8-29 12:40 | 显示全部楼层
2# hotpower  
大叔啊,
我的不是下一期吗?
呵呵...
怎么是这期啊!
有鸭梨啊。
chinacn1989 发表于 2011-8-29 10:04


哈哈,忘记了,到时提醒俺呀~~~
hotpower 发表于 2011-8-29 12:43 | 显示全部楼层
晕,选美只能增加不能减少和修改。
 楼主| chinacn1989 发表于 2011-8-29 14:44 | 显示全部楼层
晕,选美只能增加不能减少和修改。
hotpower 发表于 2011-8-29 12:43

难道我都上去了?
hotpower 发表于 2011-8-29 14:53 | 显示全部楼层
上去陪练,晕!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

272

帖子

0

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