【教程】【Ai-M62-32S】点灯

[复制链接]
查看348 | 回复0 | 2023-11-20 22:54:56 | 显示全部楼层 |阅读模式
本帖最后由 muyumuyu 于 2023-11-20 22:54 编辑

看到很多大佬开箱都点灯 那我也点一盏吧
这里特别感谢 李木子 大佬为我答疑解惑.

切换目录 这里具体路径需要根据自己目录所在位置做相应调整
  1. cd AiPi-Open-Kits/aithinker_Ai-M6X_SDK/examples/mycode/gpio/gpio_input_output
复制代码
修改该目录下的示例文件(main.c) 的代码  代码如下 有相对详尽的注释 应该是可以看懂的.
  1. #include "bflb_gpio.h"
  2. #include "board.h"

  3. struct bflb_device_s *gpio;

  4. int main(void)
  5. {
  6.     // 初始化板子
  7.     board_init();
  8.     gpio = bflb_device_get_by_name("gpio");

  9.     // 引脚初始化
  10.     bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  11.     bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  12.     bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  13.     bflb_gpio_init(gpio, GPIO_PIN_27, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  14.     bflb_gpio_init(gpio, GPIO_PIN_29, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);

  15.     while (1) {

  16.         // bflb_gpio_set 用于给设备设置引脚
  17.         // bflb_gpio_reset 用于给设备重置引脚
  18.         // bflb_mtimer_delay_ms 用于设置延时 单位:ms

  19.         // 左侧大的LED的三个子灯
  20.         bflb_gpio_set(gpio, GPIO_PIN_12);
  21.         bflb_mtimer_delay_ms(200);
  22.         bflb_gpio_reset(gpio, GPIO_PIN_12);
  23.         bflb_mtimer_delay_ms(200);
  24.         bflb_gpio_set(gpio, GPIO_PIN_14);
  25.         bflb_mtimer_delay_ms(200);
  26.         bflb_gpio_reset(gpio, GPIO_PIN_14);
  27.         bflb_mtimer_delay_ms(200);
  28.         bflb_gpio_set(gpio, GPIO_PIN_15);
  29.         bflb_mtimer_delay_ms(200);
  30.         bflb_gpio_reset(gpio, GPIO_PIN_15);
  31.         bflb_mtimer_delay_ms(200);

  32.         // 右侧两个小的LED灯
  33.         bflb_gpio_set(gpio, GPIO_PIN_27);
  34.         bflb_mtimer_delay_ms(200);
  35.         bflb_gpio_reset(gpio, GPIO_PIN_27);
  36.         bflb_mtimer_delay_ms(200);
  37.         bflb_gpio_set(gpio, GPIO_PIN_29);
  38.         bflb_mtimer_delay_ms(200);
  39.         bflb_gpio_reset(gpio, GPIO_PIN_29);
  40.         bflb_mtimer_delay_ms(200);
  41.     }
  42. }
复制代码
该代码实现了大的LED(三盏小灯)和两个小的LED依次亮起的效果

最后在当前目录下启动终端 进行编译和烧录
  1. sudo make && sudo make flash COMX=/dev/ttyUSB0
复制代码
这里/dev/ttyUSB0 是我设备的端口 具体需要根据USB所在的自己电脑的端口进行修改

(教程结束)


Q&A:
可能会遇到烧录失败的问题 (错误片段)
  1. [22:48:44.932] - shake hand fail
  2. [22:48:44.932] - ########################################################################
  3. [22:48:44.932] - 请按照以下描述排查问题:
  4. [22:48:44.932] - Boot pin是否上拉到板子自身的3.3V,而不是外部的3.3V
  5. [22:48:44.932] - UART RX是否连接到USB转串口的TX引脚
  6. [22:48:44.932] - UART TX是否连接到USB转串口的RX引脚
  7. [22:48:44.932] - 在使用烧录软件进行烧录前,是否在Boot pin拉高的情况下,使用Reset/Chip_En复位了芯片
  8. [22:48:44.932] - 烧录软件所选择的COM口,是否是连接芯片的串口
  9. [22:48:44.933] - 烧录软件上选择的波特率是否是USB转串口支持的波特率
  10. [22:48:44.933] - 3.3V供电是否正常
  11. [22:48:44.933] - 板子供电电流是否正常(烧录模式下,芯片耗电电流5-7mA)
  12. [22:48:44.933] - ########################################################################
  13. [22:48:44.933] - shake hand fail
  14. [22:48:44.934] - ========= ChipID:  =========
  15. [22:48:44.934] - Get bootinfo time cost(ms): 3985.20361328125
  16. [22:48:44.934] - {"ErrorCode": "0050","ErrorMsg":"BFLB IMG LOAD SHAKEHAND FAIL"}
  17. [22:48:44.934] - Burn Retry
  18. [22:48:44.935] - Burn return with retry fail
复制代码
这是因为板子正在运行程序 需要在板子烧录状态下进行烧录
靠近USB口有两个按钮 左侧是RST按钮 右侧是BURN按钮

- 复位: 单击按RST按钮即可
- 进入烧录状态: 按住BURN按钮 单击RST按钮即可
正常烧录成功会显示 [All Success] 字样


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则