查了一下GD官方的同型号开发板,发现GD32VW553-IOT应该基于成本考虑做了很多简化:
1)USB只有取电功能,USB如果接个CH340支持UART,就会方便很多
2)若干引脚未引出,导致不能直接使用JLINK调试
3)boot0上拉到VCC的R4电阻未焊接导致必须做下小修复才能支持ISP下载
4)官方版主集成了GD Link,支持文件拖拽下载,和PICO烧录方式一致,真的很方便
5)GD32VW553-IOT上主控芯片是直接焊在板子上的,不是采用模组,应该也是基于成本考虑
总之,应该是为了节约成本,GD32VW553-IOT做了很多取舍。
但GD32VW553-IOT设计非常紧凑,颜值也相当能打。
下面开始点灯
GD32VW55x_RELEASE_V1.0.3中提供了蓝牙从机->串口透传应用,位于
GD32VW55x_RELEASE_V1.0.3\MSDK\examples\ble\peripheral\ble_app_uart
在本文之前,已有大佬对此应用进行了详细的介绍,本文在次应用基础上简单增加点灯代码,实现BLE遥控点灯功能。
void app_datatrans_srv_rx_callback(uint16_t data_len, uint8_t *p_data)
{
uint8_t *p_str = sys_malloc(data_len + 1);
if (p_str) {
app_print("datatrans srv receive data: \r\n");
memset(p_str, 0, data_len + 1);
memcpy(p_str, p_data, data_len);
app_print("%s\r\n", p_str);
//以下为增加代码在透传字符串包含“light on"时点灯,包含”light off"时灭灯
if(strstr((char*)p_str,"light on")){
gpio_bit_reset(GPIOA, GPIO_PIN_4);
}else if(strstr((char*)p_str,"light off"))
{
gpio_bit_set(GPIOA, GPIO_PIN_4);
}
//以上为增加代码
sys_mfree(p_str);
}
}
在main中增加对gpio的初始化:
int main(void)
{
sys_os_init();
platform_init();
//以下为增加代码
/* enable the LED clock */
rcu_periph_clock_enable(RCU_GPIOA);
/* condiv LED GPIO port */
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_4 );
/* reset LED GPIO pin */
gpio_bit_reset(GPIOA, GPIO_PIN_4);
//以上为增加代码
app_uart_init();
ble_init();
sys_os_start();
for ( ; ; );
}
以上很简单就实现了BLE点灯,使用一下。


typedef enum
{
BLE_GATT_SVC_DATATRANS_SERVICE = BLE_GATT_UUID_16_LSB(0x0101), /* BLE datatrans service UUID */
BLE_GATT_SVC_DATATRANS_RX_CHAR = BLE_GATT_UUID_16_LSB(0x0102), /* BLE datatrans RX characteristic UUID */
BLE_GATT_SVC_DATATRANS_TX_CHAR = BLE_GATT_UUID_16_LSB(0x0103), /* BLE datatrans TX characteristic UUID */
} ble_datatrans_uuid_t;
3个UUID分别对应自定义服务名、1个负责处理TX的特征值和1个负责处理RX的特征值。
全部评论