【祖传点灯】安信可Ai-M61-32S 新手点灯过程(含踩坑)

[复制链接]
查看1557 | 回复11 | 2024-5-11 18:03:18 | 显示全部楼层 |阅读模式
1、工具下载
包括vscode、git

                               
登录/注册后可看大图



                               
登录/注册后可看大图


网上关于上面两个软件的教程超级多,关于git我是参考了(祖传点灯)win10下用vscode点亮Ai-M61-32S-kit - 板子申请专区 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)中的下载链接https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.3/Git-2.41.0.3-64-bit.exe
2、搭建环境






                               
登录/注册后可看大图


  • 搞定源码后,需要将三个路劲添加至系统环境变量中


                               
登录/注册后可看大图



添加完成后,需要在powershell中使用make -v进行测试,后续需要使用make命令生成.bin文件

                               
登录/注册后可看大图


3、点灯ing
  • 修改代码:使用VS Code打开本地的源码文件夹AiPi-Open-Kits,在AiPi-Open-Kits中的AiPi-Open-Kits\aithinker_Ai-M6X_SDK\examples\peripherals\gpio\gpio_input_output路径,可以找到main.c文件

查看原理图


                               
登录/注册后可看大图


RGB灯由IO12、IO14、IO15三个IO口控制,可以修改代码实行三色灯切换的点灯效果

                               
登录/注册后可看大图


  • 编译:在AiPi-Open-Kits/aithinker_Ai-M6X_SDK/examples/peripherals/gpio/gpio_input_output路径下Open Git Bash here


                               
登录/注册后可看大图



        1、踩坑:可能会报错

                               
登录/注册后可看大图
这时需要找到board.c文件,

                               
登录/注册后可看大图
修改包含的头文件及代码,

                               
登录/注册后可看大图

                               
登录/注册后可看大图
,修改后保存,再次按照同样的方法make
        2、不出意外的话还是会出意外,如果出现

                               
登录/注册后可看大图
,此时需要修改aithinker_Ai-M6X_SDK文件夹下的build文件
对照着删除3条代码即刻

                               
登录/注册后可看大图
,参考【祖传点灯】安信可Ai-M61-32S 新手点灯,环境搭建及编译烧录踩坑记录 - 板子申请专区 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)
        3、最后出现

                               
登录/注册后可看大图
,表示编译完成,可进行下一步的烧录点灯
  • 烧录:使用type-c线缆将开发板与电脑端相连

        ①使用 make flash COMX=COM11(根据实际的com口决定)进行烧录

                               
登录/注册后可看大图
,参考【祖传点灯】安信可Ai-M61-32S-kit-开始lighting - 板子申请专区 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

        ②踩坑:进入烧录模式需要先长按IO2 按键(稍微长一点),然后保持的同时按下EN按键后松开,此时如果不确定是否进入烧录模式,可以再按下EN后松开;
        ③踩坑:参考【祖传点灯】安信可Ai-M61-32S 新手点灯,环境搭建及编译烧录踩坑记录 - 板子申请专区 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)有烧录软件

                               
登录/注册后可看大图


选中MCU,设置地址,选择gpio\gpio_input_output\build\build_out路径下的gpio_input_output_bl616.bin文件,设置好COM口,打开串口后,让开发板进入烧录模式后点击下载
        ④点亮RGB灯
ca7eb899719eeb68fa986fd71447728b.jpg e7d6c0439846128ff1ae5f0e4064e60b.jpg e858a42324f78c621111d7b0eedcb51b.jpg








回复

使用道具 举报

hrqwe | 2024-5-11 23:18:45 | 显示全部楼层
点赞
日拱一卒,功不唐捐
回复

使用道具 举报

WangChong | 2024-5-11 23:29:31 | 显示全部楼层
哈哈 进阶点 pwm电灯 挑战下?
回复 支持 反对

使用道具 举报

1055173307 | 2024-5-12 13:16:16 | 显示全部楼层
回复

使用道具 举报

jeny@123 | 2024-5-12 13:59:02 | 显示全部楼层
WangChong 发表于 2024-5-11 23:29
哈哈 进阶点 pwm电灯 挑战下?

pwm调亮度,可以试试
回复 支持 反对

使用道具 举报

jeny@123 | 2024-5-12 15:09:50 | 显示全部楼层
jeny@123 发表于 2024-5-12 13:59
pwm调亮度,可以试试
  1. #include "bflb_gpio.h"              //gpio头文件
  2. #include "board.h"                  //开发板头文件,包装的库
  3. #include "bflb_mtimer.h"            //mtimer定时器头文件
  4. #include "bflb_pwm_v2.h"            //pwm_v2头文件
  5. #include "bflb_clock.h"             //系统时钟头文件

  6. struct bflb_device_s *gpio;
  7. struct bflb_device_s *pwm;          //创建LHAL外设库结构体,名称为pwm

  8. void gpio_init()        //编写一个选择pwm输出的gpio口初始化函数
  9. {
  10.     struct bflb_device_s *gpio;

  11.     gpio = bflb_device_get_by_name("gpio");

  12.     bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);
  13.     //bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  14.     bflb_gpio_init(gpio, GPIO_PIN_1, GPIO_INPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  15.     //选择IO0作为pwm输出,
  16. }

  17. int main(void)
  18. {
  19.     int i;
  20.     board_init();
  21.     printf("gpio output\r\n");
  22.     gpio_init();

  23.     pwm = bflb_device_get_by_name("pwm_v2_0");  //给外设接口赋名pwm_v2_0

  24.     /* period = .XCLK / .clk_div / .period = 40MHz / 40 / 1000 = 1KHz */

  25.     struct bflb_pwm_v2_config_s cfg = {
  26.         .clk_source = BFLB_SYSTEM_XCLK,
  27.         .clk_div = 40,
  28.         .period = 1000,
  29.     };                //设置PWM的频率,选择时钟,分频,和周期。根据上面的公式算出最终的频率。
  30.    
  31.     /*初始化PWM输出*/
  32.     bflb_pwm_v2_init(pwm, &cfg);
  33.     bflb_pwm_v2_start(pwm);          //将设置好的频率开启pwm输出

  34.     while (1) {
  35.     //蓝灯呼吸亮灭  
  36.     bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0);         //那么问题来了,如何知道IO口对应的PWM通道,后面会解答,IO0是通道0

  37.     for(i=150;i>0;i--){
  38.         bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, i, 150); //改变占空比,变量i会不断变化
  39.         bflb_mtimer_delay_ms(10);
  40.     }
  41.     for(i=1;i<150;i++){
  42.         bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, i, 150);
  43.         bflb_mtimer_delay_ms(10);
  44.     }
  45.    
  46.     bflb_pwm_v2_channel_positive_stop(pwm, PWM_CH0);        
  47.     }
  48. }
复制代码
回复 支持 反对

使用道具 举报

WangChong | 2024-5-12 23:41:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

WT_0213 | 2024-5-13 09:16:29 | 显示全部楼层
回复

使用道具 举报

知行合一 | 2024-5-24 15:32:07 | 显示全部楼层
点灯成功
回复

使用道具 举报

物联网 | 2024-6-6 22:26:32 | 显示全部楼层
真详细
回复

使用道具 举报

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

本版积分规则