本帖最后由 学嵌入式的Momo 于 2024-5-4 13:42 编辑
环境搭建
从 Github 克隆 SDK:
- git clone https://github.com/Ai-Thinker-Open/aithinker_Ai-M6X_SDK.git --depth=1
复制代码 这里指定了 --depth=1,只下载最新的版本,可以省点时间,也减少网络问题。
工具链是通过 git submodule 管理的,可以通过仓库里的 install.sh 拉取
最后把工具链加到 PATH,用仓库里的 export.sh 即可:
这个命令会同时给工具加上执行权限。我用的是 ArchLinux,虽然博流的工具的名字都带 ubuntu,但也能正常用。
Hello World
先跑个 helloworld 例子,走通编译和烧录流程:
- cd examples/helloworld
- make CHIP=bl616 BOARD=bl616dk
复制代码 因为 Makefile 里有设默认的 CHIP 和 BOARD,刚好也是 bl616,所有直接 make 也是可以的。
相反如果指定 bl618,sdk 里反而没有。
正常编译最后会显示 Built target combine
烧录:
- make flash CHIP=bl616 BOARD=bl616dk COMX=/dev/ttyUSD0
复制代码 失败了,根据提示,需要把 Boot 拉高:
正确操作是:先按住 Boot,然后按一下 Reset,放开 Reset, 放开 Boot。
烧录成功之后可以通过串口看到 helloworld 输出
蓝牙点灯
作为一个支持蓝牙的开发板,不搞点蓝牙好像说不过去。所有做个蓝牙点灯的例子,蓝牙连接上的时候点灯,蓝牙断开的时候关灯。
在 examples/btble/peripheral 基础上做修改,先在 main 里设置好 gpio 为推挽输出:
- gpio = bflb_device_get_by_name("gpio");
- bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
复制代码 在连接建立的回调 ble_connected 里打开 LED:
- static void ble_connected(struct bt_conn *conn, u8_t err)
- {
- if(err || conn->type != BT_CONN_TYPE_LE) {
- return;
- }
- bflb_gpio_set(gpio, GPIO_PIN_12);
- }
复制代码 在连接关闭的回调 ble_disconnected 里关闭 LED:
- static void ble_disconnected(struct bt_conn *conn, u8_t reason)
- {
- int ret;
- if(conn->type != BT_CONN_TYPE_LE) {
- return;
- }
- bflb_gpio_reset(gpio, GPIO_PIN_12);
- ret = set_adv_enable(true);
- if(ret) {
- printf("Restart adv fail. \r\n");
- }
- }
复制代码 手机上用蓝牙调试助手连接,LED 亮:
蓝牙断开,LED 灭:
视频 |