Colibri-F350RB开发板做工还是挺精美的,今天分享一下GD32F350的GPIO的输出控制,以GPIO为例,电量LED灯。
如图所示,三个LED灯分别接PB8、PB9和PB10;
配置成输出的原理如图
实现的代码程序如下:
- /*************************************************************************************************
- * 1|Äü£o3õê¼»ˉóû§Ledé豸 *
- * 2Îêy£oÎT *
- * ·μ»Ø£oÎT *
- * ËμÃ÷£o *
- *************************************************************************************************/
- void EvbLedConfig(void)
- {
- rcu_periph_clock_enable(RCU_GPIOB);
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
- GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ,
- GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
- }
- void EvbLedControl1(int cmd)
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
- }
- }
- void EvbLedControl2(int cmd)
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed1μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed1μÆ*/
- }
- }
- void EvbLedControl3(int cmd)
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed1μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed1μÆ*/
- }
- }
- /*************************************************************************************************
- * 1|Äü£o¿ØÖÆLedμÄμãááoíϨÃe *
- * 2Îêy£o(1) index LedμƱàoÅ *
- * (2) cmd LedμÆμãáá»òÕßϨÃeμÄÃüáî *
- * ·μ»Ø£oÎT *
- * ËμÃ÷£o *
- *************************************************************************************************/
- void EvbLedControl(int index, int cmd)
- {
- switch (index)
- {
- case LED1:
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_8); /*μãááLed1μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_8); /*ϨÃeLed1μÆ*/
- }
- break;
- }
- case LED2:
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_9); /*μãááLed2μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_9); /*ϨÃeLed2μÆ*/
- }
- break;
- }
- case LED3:
- {
- if (cmd == LED_ON)
- {
- gpio_bit_set(GPIOB, GPIO_PIN_10); /*μãááLed3μÆ*/
- }
- else
- {
- gpio_bit_reset(GPIOB, GPIO_PIN_10); /*ϨÃeLed3μÆ*/
- }
- break;
- }
- default:
- {
- break;
- }
- }
- }
复制代码
- int main(void)
- {
- int i;
-
- EvbLedConfig();
- while(1)
- {
- for (i =0; i<0xfffff; i++);
- EvbLedControl(LED1, LED_ON);
- EvbLedControl(LED2, LED_ON);
- EvbLedControl(LED3, LED_ON);
-
- for (i =0; i<0xfffff; i++);
- EvbLedControl(LED1, LED_OFF);
- EvbLedControl(LED2, LED_OFF);
- EvbLedControl(LED3, LED_OFF);
- }
- return 1;
- }
复制代码
现象:三个LED灯同时交替闪烁
本文来自论坛,点击查看完整帖子内容。