为了测试方便,设计了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灯轮询点亮
|