本帖最后由 泰勒soc 于 2024-5-2 22:24 编辑
前言
板子在路上,环境搭建弄了好久,与论坛之前的教程有小小的区别。
准备安装git,vscode,参考零基础搭建小安派Windows 开发环境
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=282
(出处: 物联网开发者社区-安信可论坛)
M61板子资料https://docs.ai-thinker.com/ai_m61
环境搭建
M61的板子开发环境对应的SDK就是gitee上的
git clone https://gitee.com/Ai-Thinker-Open/aithinker_Ai-M6X_SDK.git
下载下来,得到 aithinker_Ai-M6X_SDK
文件夹
其中tools和toolchain文件夹是空的,需要下载
在 aithinker_Ai-M6X_SDK/toolchain
文件夹中下载 GCC 工具链
git clone https://gitee.com/bouffalolab/toolchain_gcc_t-head_windows.git
在 aithinker_Ai-M6X_SDK/tools
文件夹下载BouffaloSDK 获取tools工具链
git clone https://github.com/bouffalolab/bouffalo_sdk.git
添加3个path环境变量
验证环境是否配置成功
在PowerShell 输入 make -v
输出版本信息
在PowerShell 输入 riscv64-unknown-elf-gcc -v
,输出版本信息
测试DEMO
example
文件夹内有很多项目
用 vscode
打开 helloworld
项目,打开终端命令行,输入命令 make clean
清除之前可能编译出现的 build,然后输入 make
命令编译
编译100%,输出编译信息 Built target combine
PS H:\aithinker_workspace\aithinker_Ai-M6X_SDK\examples\helloworld> make
[100%] Linking C executable build_out\helloworld_bl616.elf
Generate H:/aithinker_workspace/aithinker_Ai-M6X_SDK/examples/helloworld/build/build_out/helloworld_bl616.bin
[100%] Built target helloworld_bl616.elf
Built target combine
PS H:\aithinker_workspace\aithinker_Ai-M6X_SDK\examples\helloworld>
烧录程序
先按住 IO2 (烧录按键)这个按键不松手,再按下 EN (复位)按键,两个都松开,进入烧录代码模式。
终端执行命令 make flash COMX=COM4
串口号在设备管理器中查看或者在安信可串口助手查看
下载成功后,按下 en 进行复位。
点灯DEMO
新建一个自己的项目,与例程放在一起
更改项目名,此名为编译输出文件名
修改cmakelist.txt文件,project(gpio_input_output_rgb)括号内是项目名
代码如下,可自己更改
#include "bflb_gpio.h"
#include "board.h"
struct bflb_device_s *gpio;
uint32_t gpio_group[] = {GPIO_PIN_12, GPIO_PIN_14, GPIO_PIN_15};
int main(void)
{
board_init();
gpio = bflb_device_get_by_name("gpio"); // get gpio device
// set gpio pin mode
bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
bflb_gpio_reset(gpio, GPIO_PIN_12);
bflb_gpio_reset(gpio, GPIO_PIN_14);
bflb_gpio_reset(gpio, GPIO_PIN_15);
// bflb_gpio_init(gpio, GPIO_PIN_27, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
// bflb_gpio_init(gpio, GPIO_PIN_29, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
// bflb_gpio_set(gpio, GPIO_PIN_27);
// bflb_gpio_set(gpio, GPIO_PIN_29);
uint8_t i = 0;
while (1) {
for(uint8_t j = 0; j < 2; j++) {
bflb_gpio_set(gpio, gpio_group[i]);
bflb_mtimer_delay_ms(200);
bflb_gpio_reset(gpio, gpio_group[i]);
bflb_mtimer_delay_ms(200);
}
bflb_gpio_set(gpio, gpio_group[i]);
bflb_mtimer_delay_ms(500);
bflb_gpio_reset(gpio, gpio_group[i]);
i = (i + 1) % 3;
}
}
按照测试DEMO,编译,烧录,复位,查看效果