注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
Justice_Gao的个人空间 https://home.eeworld.com.cn/space-uid-784175.html [收藏] [复制] [分享] [RSS]
日志

【GD32F350开发分享一】GPIO之点亮LED灯

已有 715 次阅读2018-9-5 18:19 |个人分类:GD32系列学习

Colibri-F350RB开发板做工还是挺精美的,今天分享一下GD32F350的GPIO的输出控制,以GPIO为例,电量LED灯。

如图所示,三个LED灯分别接PB8、PB9和PB10;


配置成输出的原理如图



实现的代码程序如下:

  1. /*************************************************************************************************
  2. *  1|Äü£o3õê¼»ˉóû§Ledé豸                                                                      *
  3. *  2Îêy£oÎT                                                                                     *
  4. *  ·μ»Ø£oÎT                                                                                     *
  5. *  ËμÃ÷£o                                                                                       *
  6. *************************************************************************************************/
  7. void EvbLedConfig(void)
  8. {
  9.     rcu_periph_clock_enable(RCU_GPIOB);
  10.     gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
  11.                   GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
  12.     gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ,
  13.                             GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
  14. }

  15. void EvbLedControl1(int cmd)
  16. {

  17.             if (cmd == LED_ON)
  18.             {
  19.                 gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
  20.             }
  21.             else
  22.             {
  23.                 gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
  24.             }
  25.         }

  26.         void EvbLedControl2(int cmd)
  27. {

  28.             if (cmd == LED_ON)
  29.             {
  30.                 gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed1μÆ*/
  31.             }
  32.             else
  33.             {
  34.                 gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed1μÆ*/
  35.             }
  36.         }

  37.         void EvbLedControl3(int cmd)
  38. {

  39.             if (cmd == LED_ON)
  40.             {
  41.                 gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed1μÆ*/
  42.             }
  43.             else
  44.             {
  45.                 gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed1μÆ*/
  46.             }
  47.         }
  48. /*************************************************************************************************
  49. *  1|Äü£o¿ØÖÆLedμÄμãááoíϨÃe                                                                    *
  50. *  2Îêy£o(1) index LedμƱàoÅ                                                                    *
  51. *        (2) cmd   LedμÆμãáá»òÕßϨÃeμÄÃüáî                                                      *
  52. *  ·μ»Ø£oÎT                                                                                     *
  53. *  ËμÃ÷£o                                                                                       *
  54. *************************************************************************************************/
  55. void EvbLedControl(int index, int cmd)
  56. {
  57.     switch (index)
  58.     {
  59.         case LED1:
  60.         {
  61.             if (cmd == LED_ON)
  62.             {
  63.                 gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
  64.             }
  65.             else
  66.             {
  67.                 gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
  68.             }
  69.             break;
  70.         }
  71.         case LED2:
  72.         {
  73.             if (cmd == LED_ON)
  74.             {
  75.                 gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed2μÆ*/
  76.             }
  77.             else
  78.             {
  79.                 gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed2μÆ*/
  80.             }
  81.             break;
  82.         }
  83.         case LED3:
  84.         {
  85.             if (cmd == LED_ON)
  86.             {
  87.                 gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed3μÆ*/
  88.             }
  89.             else
  90.             {
  91.                 gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed3μÆ*/
  92.             }
  93.             break;
  94.         }
  95.         default:
  96.         {
  97.             break;
  98.         }
  99.     }
  100. }
复制代码



  1. int main(void)
  2. {
  3.     int i;
  4.    
  5.     EvbLedConfig();
  6.     while(1)
  7.     {
  8.         for (i =0;  i<0xfffff; i++);        
  9.         EvbLedControl(LED1, LED_ON);
  10.         EvbLedControl(LED2, LED_ON);
  11.         EvbLedControl(LED3, LED_ON);
  12.         
  13.         for (i =0;  i<0xfffff; i++);  
  14.         EvbLedControl(LED1, LED_OFF);
  15.         EvbLedControl(LED2, LED_OFF);
  16.         EvbLedControl(LED3, LED_OFF);
  17.     }

  18.     return 1;
  19. }
复制代码



现象:三个LED灯同时交替闪烁


本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章