[菜农助学交流] 【第四批】新手笔记二_按键中断

[复制链接]
 楼主| 357482894 发表于 2011-11-24 21:16 | 显示全部楼层 |阅读模式
gp, IO, GPIO, pi, se
开始时,想着用按键中断来控制LED的点亮方式。按我开始的思路写好程序后,一直无法实现。仔细想想,有点问题,参数不能正确传递。然后纠结了几天,改了又改,今天终于成功了,但已完全没了当初的想法。

本程序主要利用两个按键产生两个外部中断控制两种系列的LED点亮方式,程序虽长,实质性的东西就只有中断这部分。按照群里老师的说法,下一步用定时器试试。

下面是程序:


  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "DrvGPIO.h"
  4. #include "DrvSYS.h"
  5. #include "led.h"
  6. int L_num=0,R_num=0;
  7. int flag=0;
  8. int i;
  9. char j;
  10. void EINT0CALLBACK(void)
  11. {
  12. DrvGPIO_SetBit(E_GPB,10);
  13. L_num++;
  14. flag=1;        
  15. }
  16. void EINT1CALLBACK(void)
  17. {
  18. DrvGPIO_SetBit(E_GPB,10);
  19. R_num++;
  20. flag=2;      
  21. }
  22. void Sys_Init()
  23. {
  24.     UNLOCKREG();         
  25.     SYSCLK->PWRCON.XTL12M_EN = 1;//设定12M外部晶振
  26.     DrvSYS_Delay(5000);//等待时钟就绪
  27. DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT);
  28. DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT);
  29. DrvGPIO_Open(E_GPA,4,E_IO_OUTPUT);
  30. DrvGPIO_Open(E_GPA,5,E_IO_OUTPUT);
  31. DrvGPIO_Open(E_GPB,10,E_IO_OUTPUT);
  32. DrvGPIO_ClrBit(E_GPB,10);
  33. DrvGPIO_EnableInt(E_GPB,14,E_IO_FALLING,E_MODE_EDGE);        //设置端口GPB14为外部中断模式
  34. DrvGPIO_SetDebounceTime(10,E_DBCLKSRC_10K);   
  35. DrvGPIO_EnableDebounce(E_GPB,14);
  36. DrvGPIO_InitFunction(E_FUNC_EXTINT0);                 //指定外部中断0引脚功能
  37. DrvGPIO_EnableEINT0(E_IO_FALLING,E_MODE_EDGE,EINT0CALLBACK);
  38. DrvGPIO_EnableInt(E_GPB,15,E_IO_FALLING,E_MODE_EDGE);        //设置端口GPB15为外部中断模式
  39. DrvGPIO_SetDebounceTime(10,E_DBCLKSRC_10K);   
  40. DrvGPIO_EnableDebounce(E_GPB,15);
  41. DrvGPIO_InitFunction(E_FUNC_EXTINT1);                 //指定外部中断1引脚功能
  42. DrvGPIO_EnableEINT1(E_IO_FALLING,E_MODE_EDGE,EINT1CALLBACK);
  43. }
  44. int main(void)
  45. {
  46. Sys_Init();
  47. while(1)
  48. {
  49.   DrvGPIO_ClrBit(E_GPB,10);
  50.   if(flag==1)
  51.   {
  52.    if(L_num>=10) L_num=0;
  53.    flag=0;
  54.    switch(L_num)
  55.    {
  56.     case 0:
  57.      while(1)
  58.      {
  59.       led_allon();
  60.       if(flag) break;
  61.      }
  62.      break;
  63.     case 1:
  64.      while(1)
  65.      {
  66.       led_one(1);
  67.       if(flag) break;
  68.      }
  69.      break;
  70.     case 2:
  71.      while(1)
  72.      {
  73.       led_one(2);
  74.       if(flag) break;
  75.      }
  76.      break;
  77.     case 3:
  78.      while(1)
  79.      {
  80.       led_one(3);
  81.       if(flag) break;
  82.      }
  83.      break;
  84.     case 4:
  85.      while(1)
  86.      {
  87.       led_one(4);
  88.       if(flag) break;
  89.      }
  90.      break;
  91.     case 5:
  92.      i=0;
  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.      while(1)
  98.      {
  99.       DrvGPIO_ClrBit(E_GPA,i+2);  
  100.       if(i==0) DrvGPIO_SetBit(E_GPA,5);
  101.       else DrvGPIO_SetBit(E_GPA,i+1);
  102.       DrvSYS_Delay(250000);
  103.       i++;
  104.       if(i==4) i=0;
  105.       if(flag) break;
  106.      }
  107.      break;
  108.     case 6:
  109.      i=0;
  110.      DrvGPIO_SetBit(E_GPA,2);
  111.      DrvGPIO_SetBit(E_GPA,3);
  112.      DrvGPIO_SetBit(E_GPA,4);
  113.      DrvGPIO_SetBit(E_GPA,5);
  114.      while(1)
  115.      {
  116.       DrvGPIO_ClrBit(E_GPA,i+2);  
  117.       if(i==0|i==1) DrvGPIO_SetBit(E_GPA,i+4);
  118.       else DrvGPIO_SetBit(E_GPA,i);
  119.       DrvSYS_Delay(250000);
  120.       i++;
  121.       if(i==4) i=0;
  122.       if(flag) break;
  123.      }
  124.      break;
  125.     case 7:
  126.      i=0;
  127.      DrvGPIO_SetBit(E_GPA,2);
  128.      DrvGPIO_SetBit(E_GPA,3);
  129.      DrvGPIO_SetBit(E_GPA,4);
  130.      DrvGPIO_SetBit(E_GPA,5);
  131.      while(1)
  132.      {
  133.       DrvGPIO_ClrBit(E_GPA,i+2);  
  134.       if(i==3) DrvGPIO_SetBit(E_GPA,2);
  135.       else DrvGPIO_SetBit(E_GPA,i+3);
  136.       DrvSYS_Delay(250000);
  137.       i++;
  138.       if(i==4) i=0;
  139.       if(flag) break;
  140.      }
  141.     case 8:
  142.      i=0;
  143.      j=0;
  144.      while(1)
  145.      {
  146.       if(!j) DrvGPIO_ClrBit(E_GPA,i+2);
  147.       else DrvGPIO_SetBit(E_GPA,i+2);
  148.       DrvSYS_Delay(250000);
  149.       i++;
  150.       if(i==4){i=0; j=~j;}
  151.       if(flag) break;
  152.      }
  153.      break;
  154.     case 9:
  155.      while(1)
  156.      {
  157.       DrvGPIO_ClrBit(E_GPA,2);
  158.       DrvGPIO_ClrBit(E_GPA,3);
  159.       DrvGPIO_ClrBit(E_GPA,4);
  160.       DrvGPIO_ClrBit(E_GPA,5);
  161.       DrvSYS_Delay(250000);
  162.       DrvGPIO_SetBit(E_GPA,2);
  163.       DrvGPIO_SetBit(E_GPA,3);
  164.       DrvGPIO_SetBit(E_GPA,4);
  165.       DrvGPIO_SetBit(E_GPA,5);
  166.       DrvSYS_Delay(250000);
  167.       if(flag) break;
  168.      }
  169.      break;
  170.     default:break;
  171.    }
  172.   }
  173.   if(flag==2)
  174.   {
  175.    if(R_num>=10) R_num=0;
  176.    flag=0;
  177.    switch(R_num)
  178.    {
  179.     case 0:
  180.      while(1)
  181.      {
  182.       led_allon();
  183.       if(flag) break;
  184.      }
  185.      break;
  186.     case 1:
  187.      while(1)
  188.      {
  189.       led_one(1);
  190.       if(flag) break;
  191.      }
  192.      break;
  193.     case 2:
  194.      while(1)
  195.      {
  196.       led_one(2);
  197.       if(flag) break;
  198.      }
  199.      break;
  200.     case 3:
  201.      while(1)
  202.      {
  203.       led_one(3);
  204.       if(flag) break;
  205.      }
  206.      break;
  207.     case 4:
  208.      while(1)
  209.      {
  210.       led_one(4);
  211.       if(flag) break;
  212.      }
  213.      break;
  214.     case 5:
  215.      i=3;
  216.      DrvGPIO_SetBit(E_GPA,2);
  217.      DrvGPIO_SetBit(E_GPA,3);
  218.      DrvGPIO_SetBit(E_GPA,4);
  219.      DrvGPIO_SetBit(E_GPA,5);
  220.      while(1)
  221.      {
  222.       DrvGPIO_ClrBit(E_GPA,i+2);  
  223.       if(i==3) DrvGPIO_SetBit(E_GPA,2);
  224.       else DrvGPIO_SetBit(E_GPA,i+3);
  225.       DrvSYS_Delay(250000);
  226.       if(i==0) i=4;
  227.       i--;
  228.       if(flag) break;  
  229.      }
  230.      break;
  231.     case 6:
  232.      i=3;
  233.      DrvGPIO_SetBit(E_GPA,2);
  234.      DrvGPIO_SetBit(E_GPA,3);
  235.      DrvGPIO_SetBit(E_GPA,4);
  236.      DrvGPIO_SetBit(E_GPA,5);
  237.      while(1)
  238.      {
  239.       DrvGPIO_ClrBit(E_GPA,i+2);  
  240.       if(i==3|i==2) DrvGPIO_SetBit(E_GPA,i);
  241.       else DrvGPIO_SetBit(E_GPA,i+4);
  242.       DrvSYS_Delay(250000);
  243.       if(i==0) i=4;
  244.       i--;
  245.       if(flag) break;  
  246.      }
  247.      break;
  248.     case 7:
  249.      i=3;
  250.      DrvGPIO_SetBit(E_GPA,2);
  251.      DrvGPIO_SetBit(E_GPA,3);
  252.      DrvGPIO_SetBit(E_GPA,4);
  253.      DrvGPIO_SetBit(E_GPA,5);
  254.      while(1)
  255.      {
  256.       DrvGPIO_ClrBit(E_GPA,i+2);  
  257.       if(i==0) DrvGPIO_SetBit(E_GPA,5);
  258.       else DrvGPIO_SetBit(E_GPA,i+1);
  259.       DrvSYS_Delay(250000);
  260.       if(i==0) i=4;
  261.       i--;
  262.       if(flag) break;  
  263.      }
  264.      break;
  265.     case 8:
  266.      i=3;
  267.      j=0;
  268.      while(1)
  269.      {
  270.       if(!j) DrvGPIO_ClrBit(E_GPA,i+2);
  271.       else DrvGPIO_SetBit(E_GPA,i+2);
  272.       DrvSYS_Delay(250000);
  273.       if(i==0){i=4; j=~j;}
  274.       i--;
  275.       if(flag) break;  
  276.      }
  277.      break;
  278.     case 9:
  279.      while(1)
  280.      {
  281.       DrvGPIO_ClrBit(E_GPA,2);
  282.       DrvGPIO_ClrBit(E_GPA,3);
  283.       DrvGPIO_ClrBit(E_GPA,4);
  284.       DrvGPIO_ClrBit(E_GPA,5);
  285.       DrvSYS_Delay(250000);
  286.       DrvGPIO_SetBit(E_GPA,2);
  287.       DrvGPIO_SetBit(E_GPA,3);
  288.       DrvGPIO_SetBit(E_GPA,4);
  289.       DrvGPIO_SetBit(E_GPA,5);
  290.       DrvSYS_Delay(250000);
  291.       if(flag) break;
  292.      }
  293.      break;
  294.     default:break;
  295.    }
  296.   }
  297. }
  298. }



 楼主| 357482894 发表于 2011-11-24 21:17 | 显示全部楼层
按大叔的指示,还有工程文件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
aijuan 发表于 2011-11-24 21:40 | 显示全部楼层
不错,学习了
tendence 发表于 2011-11-26 20:44 | 显示全部楼层
不错,学习了!
要是你的程序能够加一点注释就好了,这样看起来就会舒服一些了。
 楼主| 357482894 发表于 2011-11-28 20:15 | 显示全部楼层
4# tendence

谢谢你的建议!这次都是基本操作,所以没注意到,以后尽量注意!
共同学习,呵呵!
 楼主| 357482894 发表于 2011-11-28 20:23 | 显示全部楼层
今晚又想了想这个程序,发现按最初的想法还是可以的。

声明flag为外部变量,这样就可以实现参数传递了。还是C语言水平不行,呵呵。

下面是我修改后的程序,相比以前的简洁了很多。

key_led.c


  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "DrvGPIO.h"
  4. #include "DrvSYS.h"
  5. #include "led.h"
  6. int L_num=0,R_num=0;
  7. int flag=0;
  8. int i;
  9. char j;
  10. void EINT0CALLBACK(void)
  11. {
  12. DrvGPIO_SetBit(E_GPB,10);
  13. L_num++;
  14. flag=1;        
  15. }
  16. void EINT1CALLBACK(void)
  17. {
  18. DrvGPIO_SetBit(E_GPB,10);
  19. R_num++;
  20. flag=2;      
  21. }
  22. void Sys_Init()
  23. {
  24.     UNLOCKREG();         
  25.     SYSCLK->PWRCON.XTL12M_EN = 1;//设定12M外部晶振
  26.     DrvSYS_Delay(5000);//等待时钟就绪
  27. DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT);
  28. DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT);
  29. DrvGPIO_Open(E_GPA,4,E_IO_OUTPUT);
  30. DrvGPIO_Open(E_GPA,5,E_IO_OUTPUT);
  31. DrvGPIO_Open(E_GPB,10,E_IO_OUTPUT);
  32. DrvGPIO_ClrBit(E_GPB,10);
  33. DrvGPIO_EnableInt(E_GPB,14,E_IO_FALLING,E_MODE_EDGE);        //设置端口GPB14为外部中断模式
  34. DrvGPIO_SetDebounceTime(10,E_DBCLKSRC_10K);   
  35. DrvGPIO_EnableDebounce(E_GPB,14);
  36. DrvGPIO_InitFunction(E_FUNC_EXTINT0);                 //指定外部中断0引脚功能
  37. DrvGPIO_EnableEINT0(E_IO_FALLING,E_MODE_EDGE,EINT0CALLBACK);
  38. DrvGPIO_EnableInt(E_GPB,15,E_IO_FALLING,E_MODE_EDGE);        //设置端口GPB15为外部中断模式
  39. DrvGPIO_SetDebounceTime(10,E_DBCLKSRC_10K);   
  40. DrvGPIO_EnableDebounce(E_GPB,15);
  41. DrvGPIO_InitFunction(E_FUNC_EXTINT1);                 //指定外部中断1引脚功能
  42. DrvGPIO_EnableEINT1(E_IO_FALLING,E_MODE_EDGE,EINT1CALLBACK);
  43. }
  44. int main(void)
  45. {
  46. Sys_Init();
  47. while(1)
  48. {
  49.   if(flag==1)
  50.   {
  51.    DrvGPIO_ClrBit(E_GPB,10);
  52.    if(L_num>=10) L_num=0;
  53.    flag=0;
  54.    switch(L_num)
  55.    {
  56.     case 0:
  57.      led_allon();
  58.      break;
  59.     case 1:
  60.      led_one(1);
  61.      break;
  62.     case 2:
  63.      led_one(2);
  64.      break;
  65.     case 3:
  66.      led_one(3);
  67.      break;
  68.     case 4:
  69.      led_one(4);
  70.      break;
  71.     case 5:
  72.      led_l2r_one();
  73.      break;
  74.     case 6:
  75.      led_l2r_two();
  76.      break;
  77.     case 7:
  78.      led_l2r_three();
  79.      break;
  80.     case 8:
  81.      led_l2r_four();
  82.      break;
  83.     case 9:
  84.      led_all();
  85.      break;
  86.     default:break;
  87.    }
  88.   }
  89.   if(flag==2)
  90.   {
  91.    DrvGPIO_ClrBit(E_GPB,10);
  92.    if(R_num>=10) R_num=0;
  93.    flag=0;
  94.    switch(R_num)
  95.    {
  96.     case 0:
  97.      led_allon();
  98.      break;
  99.     case 1:
  100.      led_one(1);
  101.      break;
  102.     case 2:
  103.      led_one(2);
  104.      break;
  105.     case 3:
  106.      led_one(3);
  107.      break;
  108.     case 4:
  109.      led_one(4);
  110.      break;
  111.     case 5:
  112.      led_r2l_one();
  113.      break;
  114.     case 6:
  115.      led_r2l_two();
  116.      break;
  117.     case 7:
  118.      led_r2l_three();
  119.      break;
  120.     case 8:
  121.      led_r2l_four();
  122.      break;
  123.     case 9:
  124.      led_all();
  125.      break;
  126.     default:break;
  127.    }
  128.   }
  129. }
  130. }




led.h


  1. #ifndef _LED_H_
  2. #define _LED_H_

  3. void led_one(int num);
  4. void led_allon(void);
  5. void led_all(void);
  6. void led_l2r_one(void);
  7. void led_l2r_two(void);
  8. void led_l2r_three(void);
  9. void led_l2r_four(void);
  10. void led_r2l_one(void);
  11. void led_r2l_two(void);
  12. void led_r2l_three(void);
  13. void led_r2l_four(void);

  14. #endif



led.c



  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "DrvGPIO.h"
  4. #include "DrvSYS.h"
  5. #include "led.h"

  6. extern int flag;

  7. //将第num个LED点亮,其他灭
  8. void led_one(int num)
  9. {
  10. int i;
  11. DrvGPIO_ClrBit(E_GPA,num+1);
  12. for(i=1;i<5;i++) //其他灯灭
  13. {
  14. if(i!=num)
  15. {
  16. DrvGPIO_SetBit(E_GPA,i+1);
  17. }
  18. }
  19. while(1)
  20. {
  21. if(flag) break;
  22. }
  23. }

  24. //LED全亮
  25. void led_allon(void)
  26. {
  27. DrvGPIO_ClrBit(E_GPA,2);
  28. DrvGPIO_ClrBit(E_GPA,3);
  29. DrvGPIO_ClrBit(E_GPA,4);
  30. DrvGPIO_ClrBit(E_GPA,5);
  31. while(1)
  32. {
  33. if(flag) break;
  34. }
  35. }

  36. //四个LED一起闪烁
  37. void led_all(void)
  38. {
  39. while(1)
  40. {
  41. if(flag) break;
  42. DrvGPIO_ClrBit(E_GPA,2);
  43. DrvGPIO_ClrBit(E_GPA,3);
  44. DrvGPIO_ClrBit(E_GPA,4);
  45. DrvGPIO_ClrBit(E_GPA,5);
  46. DrvSYS_Delay(250000);
  47. DrvGPIO_SetBit(E_GPA,2);
  48. DrvGPIO_SetBit(E_GPA,3);
  49. DrvGPIO_SetBit(E_GPA,4);
  50. DrvGPIO_SetBit(E_GPA,5);
  51. DrvSYS_Delay(250000);
  52. }
  53. }

  54. //从左到右依次点亮一个LED,循环执行
  55. void led_l2r_one(void)
  56. {
  57. int i=0;
  58. DrvGPIO_SetBit(E_GPA,2);
  59. DrvGPIO_SetBit(E_GPA,3);
  60. DrvGPIO_SetBit(E_GPA,4);
  61. DrvGPIO_SetBit(E_GPA,5);
  62. while(1)
  63. {
  64. if(flag) break;
  65. DrvGPIO_ClrBit(E_GPA,i+2);
  66. if(i==0) DrvGPIO_SetBit(E_GPA,5);
  67. else DrvGPIO_SetBit(E_GPA,i+1);
  68. DrvSYS_Delay(250000);
  69. i++;
  70. if(i==4) i=0;
  71. }
  72. }

  73. //从左到右依次点亮两个LED,循环执行
  74. void led_l2r_two(void)
  75. {
  76. int i=0;
  77. DrvGPIO_SetBit(E_GPA,2);
  78. DrvGPIO_SetBit(E_GPA,3);
  79. DrvGPIO_SetBit(E_GPA,4);
  80. DrvGPIO_SetBit(E_GPA,5);
  81. while(1)
  82. {
  83. if(flag) break;
  84. DrvGPIO_ClrBit(E_GPA,i+2);
  85. if(i==0|i==1) DrvGPIO_SetBit(E_GPA,i+4);
  86. else DrvGPIO_SetBit(E_GPA,i);
  87. DrvSYS_Delay(250000);
  88. i++;
  89. if(i==4) i=0;
  90. }
  91. }

  92. //从左到右依次点亮三个LED,循环执行
  93. void led_l2r_three(void)
  94. {
  95. int i=0;
  96. DrvGPIO_SetBit(E_GPA,2);
  97. DrvGPIO_SetBit(E_GPA,3);
  98. DrvGPIO_SetBit(E_GPA,4);
  99. DrvGPIO_SetBit(E_GPA,5);
  100. while(1)
  101. {
  102. if(flag) break;
  103. DrvGPIO_ClrBit(E_GPA,i+2);
  104. if(i==3) DrvGPIO_SetBit(E_GPA,2);
  105. else DrvGPIO_SetBit(E_GPA,i+3);
  106. DrvSYS_Delay(250000);
  107. i++;
  108. if(i==4) i=0;
  109. }
  110. }

  111. //从左到右依次每个LED,然后依次熄灭,循环执行
  112. void led_l2r_four(void)
  113. {
  114. int i=0;
  115. char j=0;
  116. DrvGPIO_SetBit(E_GPA,2);
  117. DrvGPIO_SetBit(E_GPA,3);
  118. DrvGPIO_SetBit(E_GPA,4);
  119. DrvGPIO_SetBit(E_GPA,5);
  120. while(1)
  121. {
  122. if(flag) break;
  123. if(!j) DrvGPIO_ClrBit(E_GPA,i+2);
  124. else DrvGPIO_SetBit(E_GPA,i+2);
  125. DrvSYS_Delay(250000);
  126. i++;
  127. if(i==4){i=0; j=~j;}
  128. }
  129. }

  130. //从右到左依次点亮一个LED,循环执行
  131. void led_r2l_one(void)
  132. {
  133. int i=3;
  134. DrvGPIO_SetBit(E_GPA,2);
  135. DrvGPIO_SetBit(E_GPA,3);
  136. DrvGPIO_SetBit(E_GPA,4);
  137. DrvGPIO_SetBit(E_GPA,5);
  138. while(1)
  139. {
  140. if(flag) break;
  141. DrvGPIO_ClrBit(E_GPA,i+2);
  142. if(i==3) DrvGPIO_SetBit(E_GPA,2);
  143. else DrvGPIO_SetBit(E_GPA,i+3);
  144. DrvSYS_Delay(250000);
  145. if(i==0) i=4;
  146. i--;
  147. }
  148. }

  149. //从右到左依次点亮两个LED,循环执行
  150. void led_r2l_two(void)
  151. {
  152. int i=3;
  153. DrvGPIO_SetBit(E_GPA,2);
  154. DrvGPIO_SetBit(E_GPA,3);
  155. DrvGPIO_SetBit(E_GPA,4);
  156. DrvGPIO_SetBit(E_GPA,5);
  157. while(1)
  158. {
  159. if(flag) break;
  160. DrvGPIO_ClrBit(E_GPA,i+2);
  161. if(i==3|i==2) DrvGPIO_SetBit(E_GPA,i);
  162. else DrvGPIO_SetBit(E_GPA,i+4);
  163. DrvSYS_Delay(250000);
  164. if(i==0) i=4;
  165. i--;
  166. }
  167. }

  168. //从右到左依次点亮三个LED,循环执行
  169. void led_r2l_three(void)
  170. {
  171. int i=3;
  172. DrvGPIO_SetBit(E_GPA,2);
  173. DrvGPIO_SetBit(E_GPA,3);
  174. DrvGPIO_SetBit(E_GPA,4);
  175. DrvGPIO_SetBit(E_GPA,5);
  176. while(1)
  177. {
  178. if(flag) break;
  179. DrvGPIO_ClrBit(E_GPA,i+2);
  180. if(i==0) DrvGPIO_SetBit(E_GPA,5);
  181. else DrvGPIO_SetBit(E_GPA,i+1);
  182. DrvSYS_Delay(250000);
  183. if(i==0) i=4;
  184. i--;
  185. }
  186. }

  187. //从右到左依次每个LED,然后依次熄灭,循环执行
  188. void led_r2l_four(void)
  189. {
  190. int i=3;
  191. char j=0;
  192. DrvGPIO_SetBit(E_GPA,2);
  193. DrvGPIO_SetBit(E_GPA,3);
  194. DrvGPIO_SetBit(E_GPA,4);
  195. DrvGPIO_SetBit(E_GPA,5);
  196. while(1)
  197. {
  198. if(flag) break;
  199. if(!j) DrvGPIO_ClrBit(E_GPA,i+2);
  200. else DrvGPIO_SetBit(E_GPA,i+2);
  201. DrvSYS_Delay(250000);
  202. if(i==0){i=4; j=~j;}
  203. i--;
  204. }
  205. }



工程:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

1

主题

756

帖子

1

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