本帖最后由 chenyilin 于 2018-10-13 17:05 编辑
资料来源于微信公众号“life_and_family”,更多相关资料可以关注下该公众号
使用IC GD32F330RBT6 ,固件库版本 V1.0.0, firmware for GD32F3x0 该代码使用的GPIO控制LED灯,实现流水灯操作,对应的引脚如下图:
#include"gd32f3x0.h" #include"gd32f3x0_libopt.h" #include<stdio.h>
//通过修改此处可以改变对应控制的IO口 /* eval board lowlayer led */ #define LEDn 4U
#defineLED1_PIN GPIO_PIN_10 #defineLED1_GPIO_PORT GPIOC #defineLED1_GPIO_CLK RCU_GPIOC
#defineLED2_PIN GPIO_PIN_11 #defineLED2_GPIO_PORT GPIOC #defineLED2_GPIO_CLK RCU_GPIOC
#defineLED3_PIN GPIO_PIN_12 #defineLED3_GPIO_PORT GPIOC #defineLED3_GPIO_CLK RCU_GPIOC
#defineLED4_PIN GPIO_PIN_2 #defineLED4_GPIO_PORT GPIOC #defineLED4_GPIO_CLK RCU_GPIOC
typedef enum { LED1 = 0, LED2 = 1, LED3 = 2, LED4 = 3 }led_typedef_enum; staticrcu_periph_enum GPIO_CLK[LEDn] = {LED1_GPIO_CLK, LED2_GPIO_CLK, LED3_GPIO_CLK, LED4_GPIO_CLK}; /* private variables*/ static uint32_tGPIO_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT, LED3_GPIO_PORT, LED4_GPIO_PORT};
static uint32_tGPIO_PIN[LEDn] = {LED1_PIN, LED2_PIN, LED3_PIN, LED4_PIN};
voidgd_eval_led_init(led_typedef_enum lednum) { /* enable the led clock */ rcu_periph_clock_enable(GPIO_CLK[lednum]); /* configure led GPIO port */ gpio_mode_set(GPIO_PORT[lednum],GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN[lednum]); gpio_output_options_set(GPIO_PORT[lednum],GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN[lednum]);
GPIO_BC(GPIO_PORT[lednum]) =GPIO_PIN[lednum]; }
/*! \brief turn on selected led \param[in] lednum: specify the led to be turned on \arg LED1 \arg LED2 \arg LED3 \arg LED4 \param[out] none \retval none */
voidgd_eval_led_on(led_typedef_enum lednum) { GPIO_BOP(GPIO_PORT[lednum]) =GPIO_PIN[lednum]; }
/*! \brief turn off selected led \param[in] lednum: specify the led to be turned off \arg LED1 \arg LED2 \arg LED3 \arg LED4 \param[out] none \retval none */
voidgd_eval_led_off(led_typedef_enum lednum) { GPIO_BC(GPIO_PORT[lednum]) =GPIO_PIN[lednum]; } //延时函数 void delay() { unsignedint x,y; for(x=0;x<1000;x++) for(y=0;y<1000;y++); } /*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { //LED 初始化函数 gd_eval_led_init(LED1); gd_eval_led_init(LED2); gd_eval_led_init(LED3); gd_eval_led_init(LED4);
while(1){ /* turn on led1, turn off led4*/ gd_eval_led_on(LED1);//开启LED函数 gd_eval_led_off(LED4);//关闭LED 函数 delay(); /* turn on led2, turn off led1*/ gd_eval_led_on(LED2); gd_eval_led_off(LED1); delay(); /* turn on led3, turn off led2*/ gd_eval_led_on(LED3); gd_eval_led_off(LED2); delay(); /* turn on led4, turn off led3*/ gd_eval_led_on(LED4); gd_eval_led_off(LED3); delay(); } }
资料来源于微信公众号“life_and_family”,更多相关资料可以关注下该公众号
|