本帖最后由 muyumuyu 于 2023-11-20 22:54 编辑
看到很多大佬开箱都点灯 那我也点一盏吧
这里特别感谢 李木子 大佬为我答疑解惑.
切换目录 这里具体路径需要根据自己目录所在位置做相应调整
- cd AiPi-Open-Kits/aithinker_Ai-M6X_SDK/examples/mycode/gpio/gpio_input_output
复制代码 修改该目录下的示例文件(main.c) 的代码 代码如下 有相对详尽的注释 应该是可以看懂的.
- #include "bflb_gpio.h"
- #include "board.h"
- struct bflb_device_s *gpio;
- int main(void)
- {
- // 初始化板子
- board_init();
- gpio = bflb_device_get_by_name("gpio");
- // 引脚初始化
- 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_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);
- while (1) {
- // bflb_gpio_set 用于给设备设置引脚
- // bflb_gpio_reset 用于给设备重置引脚
- // bflb_mtimer_delay_ms 用于设置延时 单位:ms
- // 左侧大的LED的三个子灯
- bflb_gpio_set(gpio, GPIO_PIN_12);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio, GPIO_PIN_12);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_set(gpio, GPIO_PIN_14);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio, GPIO_PIN_14);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_set(gpio, GPIO_PIN_15);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio, GPIO_PIN_15);
- bflb_mtimer_delay_ms(200);
- // 右侧两个小的LED灯
- bflb_gpio_set(gpio, GPIO_PIN_27);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio, GPIO_PIN_27);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_set(gpio, GPIO_PIN_29);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio, GPIO_PIN_29);
- bflb_mtimer_delay_ms(200);
- }
- }
复制代码 该代码实现了大的LED(三盏小灯)和两个小的LED依次亮起的效果
最后在当前目录下启动终端 进行编译和烧录
- sudo make && sudo make flash COMX=/dev/ttyUSB0
复制代码 这里/dev/ttyUSB0 是我设备的端口 具体需要根据USB所在的自己电脑的端口进行修改
(教程结束)
Q&A:
可能会遇到烧录失败的问题 (错误片段)
- [22:48:44.932] - shake hand fail
- [22:48:44.932] - ########################################################################
- [22:48:44.932] - 请按照以下描述排查问题:
- [22:48:44.932] - Boot pin是否上拉到板子自身的3.3V,而不是外部的3.3V
- [22:48:44.932] - UART RX是否连接到USB转串口的TX引脚
- [22:48:44.932] - UART TX是否连接到USB转串口的RX引脚
- [22:48:44.932] - 在使用烧录软件进行烧录前,是否在Boot pin拉高的情况下,使用Reset/Chip_En复位了芯片
- [22:48:44.932] - 烧录软件所选择的COM口,是否是连接芯片的串口
- [22:48:44.933] - 烧录软件上选择的波特率是否是USB转串口支持的波特率
- [22:48:44.933] - 3.3V供电是否正常
- [22:48:44.933] - 板子供电电流是否正常(烧录模式下,芯片耗电电流5-7mA)
- [22:48:44.933] - ########################################################################
- [22:48:44.933] - shake hand fail
- [22:48:44.934] - ========= ChipID: =========
- [22:48:44.934] - Get bootinfo time cost(ms): 3985.20361328125
- [22:48:44.934] - {"ErrorCode": "0050","ErrorMsg":"BFLB IMG LOAD SHAKEHAND FAIL"}
- [22:48:44.934] - Burn Retry
- [22:48:44.935] - Burn return with retry fail
复制代码 这是因为板子正在运行程序 需要在板子烧录状态下进行烧录
靠近USB口有两个按钮 左侧是RST按钮 右侧是BURN按钮
- 复位: 单击按RST按钮即可
- 进入烧录状态: 按住BURN按钮 单击RST按钮即可
正常烧录成功会显示 [All Success] 字样
|