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

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.  
  16. void EvbLedControl1(int cmd)
  17. {
  18.  
  19.             if (cmd == LED_ON)
  20.             {
  21.                 gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
  22.             }
  23.             else
  24.             {
  25.                 gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
  26.             }
  27.         }
  28.  
  29.         void EvbLedControl2(int cmd)
  30. {
  31.  
  32.             if (cmd == LED_ON)
  33.             {
  34.                 gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed1μÆ*/
  35.             }
  36.             else
  37.             {
  38.                 gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed1μÆ*/
  39.             }
  40.         }
  41.  
  42.         void EvbLedControl3(int cmd)
  43. {
  44.  
  45.             if (cmd == LED_ON)
  46.             {
  47.                 gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed1μÆ*/
  48.             }
  49.             else
  50.             {
  51.                 gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed1μÆ*/
  52.             }
  53.         }
  54. /*************************************************************************************************
  55. *  1|Äü£o¿ØÖÆLedμÄμãááoíϨÃe                                                                    *
  56. *  2Îêy£o(1) index LedμƱàoÅ                                                                    *
  57. *        (2) cmd   LedμÆμãáá»òÕßϨÃeμÄÃüáî                                                      *
  58. *  ·μ»Ø£oÎT                                                                                     *
  59. *  ËμÃ÷£o                                                                                       *
  60. *************************************************************************************************/
  61. void EvbLedControl(int index, int cmd)
  62. {
  63.     switch (index)
  64.     {
  65.         case LED1:
  66.         {
  67.             if (cmd == LED_ON)
  68.             {
  69.                 gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
  70.             }
  71.             else
  72.             {
  73.                 gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
  74.             }
  75.             break;
  76.         }
  77.         case LED2:
  78.         {
  79.             if (cmd == LED_ON)
  80.             {
  81.                 gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed2μÆ*/
  82.             }
  83.             else
  84.             {
  85.                 gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed2μÆ*/
  86.             }
  87.             break;
  88.         }
  89.         case LED3:
  90.         {
  91.             if (cmd == LED_ON)
  92.             {
  93.                 gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed3μÆ*/
  94.             }
  95.             else
  96.             {
  97.                 gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed3μÆ*/
  98.             }
  99.             break;
  100.         }
  101.         default:
  102.         {
  103.             break;
  104.         }
  105.     }
  106. }
  107.  
复制代码

 
  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.  
  19.     return 1;
  20. }
复制代码

 

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Justice_Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值