为了测试方便,设计了Arduino扩展接口,方便学习使用。
一、扩展板
扩展了常用的IIC,SPI,UART,RS485,CAN,ADC和并口LCD等
和GD32E231开发板的连接
整体图片,有些器件还没有焊接完成,大部分都有了。
二、测试LED灯
使用扩展板点亮LED灯。
2.1、电路图
对用开发板的接口
三、驱动程序
3.1、驱动主要部分程序
- void LED_Init(void)
- {
- /* enable the LED1 GPIO clock */
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_GPIOB);
- /* configure LED1 GPIO port */
- gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_11|GPIO_PIN_12);
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_11|GPIO_PIN_12);
-
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|
- GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_12);
-
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|
- GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_12);
- /* reset LED1 GPIO pin */
- gpio_bit_reset(GPIOA,GPIO_PIN_7);
- gpio_bit_reset(GPIOA,GPIO_PIN_2); //A2=0
- gpio_bit_reset(GPIOA,GPIO_PIN_1); //A0=0
- gpio_bit_reset(GPIOB,GPIO_PIN_12); //PB12=0
- }
- void write_busdat(uint8_t bus)
- {
- uint16_t gb_sta;
- gb_sta=gpio_output_port_get(GPIOB);
- gb_sta=gb_sta&(~0x1fb);
- gb_sta=gb_sta|((bus&0x3f)<<3)|(bus>>7)|((bus>>5)&0x02);
- gpio_port_write(GPIOB, gb_sta);
- }
- void led_drv(uint8_t ld)
- {
- write_busdat(ld);
- led_ctl_l();
- led_ctl_h();
- }
- void led_test(void)
- {
- delay_1ms(100);
- led_drv(~0x01);
- delay_1ms(100);
- led_drv(~0x02);
- delay_1ms(100);
- led_drv(~0x04);
- delay_1ms(100);
- led_drv(~0x08);
- }
四、测试结果
LED灯轮询点亮
|