中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-编译下载和运行第一个程序(点亮LED)

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

 

安装驱动(如果已经安装了不需要重复安装)

1,解压

 

2,根据自己的电脑选择安装32位或64位

 

 

 

 

 

使用电脑数据线连接开发板

image

 

 

将会在设备管理器中看到ASR的设备(有叹号也没关系)

 

如果没有出现的话那把Type-C口旋转180度再接到板子(Type-C是两用的, 正反接分别连接到4G模组和蓝牙芯片)

image

 

 

关于编辑程序

1,编辑程序使用文本进行编辑, 可以使用记事本等编辑器, 为了更好的编辑,推荐使用vscode

下载地址: https://code.visualstudio.com/

这边下载好了

image

 

2,一直点击next安装,只是要注意安装这里勾选上

 

3,如果要设置中文; 点击插件, 搜索 Chinese  然后点击安装

安装完点击右下角会提示,重启

 

 

 

先说一下源码; 打开SDK源码

1,解压SDK (解压注意需要是英文字符路径)

 

 

 

 

2,解压之后可以重新命名一下文件夹名字, 名字太长编译容易出问题

可以把后面的去了,只留下 ML305A_ML307A_OpenCPU

image

 

image

 

或者直接更简洁命名为SDK

image

 

 

3,右键选择使用Vscode打开源码文件夹

image

 

4,一些基本说明,知道就可以

image

image

 

 

编译SDK源码(custom_main 工程)

1,提示

4G模组二次开发不像51或者STM32单片机有页面操作的IDE软件, 这个开发是直接编辑文本, 然后cmd指令编译;

 

 

2,编写控制LED的程序(后面将会详细说明程序,这节主要熟悉开发流程)

用户可以把该例程里面的文件替换SDK里面的custom_main.c文件 或者 把代码复制粘贴过去. 复制过去以后记得ctrl+s 保存下;

image

image

 

#include "cm_sys.h"
#include "cm_os.h"
#include "cm_mem.h"
#include "stdio.h"
#include "stdlib.h"
#include "stdarg.h"
#include <string.h>
#include "cm_gpio.h"
#include "cm_iomux.h"


osThreadId_t task_test_handle;//用于记录任务的句柄(ID码),可以用来停止任务

static void task_test_fun(void *param)
{
    cm_iomux_set_pin_func(CM_IOMUX_PIN_16, CM_IOMUX_FUNC_FUNCTION1);//设置引脚复用功能; 设置16号引脚为功能1, 也就是作为GPIO0

    cm_gpio_cfg_t cfg = {0};
    cfg.direction = CM_GPIO_DIRECTION_OUTPUT;//输出
    cfg.pull = CM_GPIO_PULL_UP;//上拉

    cm_gpio_init(CM_GPIO_NUM_0, &cfg);//配置GPIO0
    
    cm_gpio_level_e level;
    while (1)
    {
        cm_gpio_set_level(CM_GPIO_NUM_0, CM_GPIO_LEVEL_HIGH);//设置GPIO0输出高电平
        osDelay(1000/5);//延时1S

        cm_gpio_get_level(CM_GPIO_NUM_0,&level);//获取电平状态
        cm_log_printf(0,"cm_gpio_get_level:%d\r\n", level);//日志打印

        cm_gpio_set_level(CM_GPIO_NUM_0, CM_GPIO_LEVEL_LOW);//设置GPIO0输出低电平
        osDelay(1000/5);//延时1S

        cm_gpio_get_level(CM_GPIO_NUM_0,&level);//获取电平状态
        cm_log_printf(0,"cm_gpio_get_level:%d\r\n", level);//日志打印
    }
}

//相当于程序的main函数
int cm_opencpu_entry(char * param)
{
    //配置任务
    osThreadAttr_t task_test = {0};
    task_test.name  = "task_test";//任务名字-随意
    task_test.stack_size = 4096 * 2;//任务使用栈大小-写这个就可以
    task_test.priority = osPriorityNormal;//任务优先级-普通优先级
    //返回任务句柄                                 任务函数        给任务函数的参数       任务配置    
    task_test_handle = osThreadNew((osThreadFunc_t)task_test_fun,      NULL,      &task_test);


    return 0;
}

 

 

3,双击运行这个

image

 

然后清理工程 输入  ML307A_build.bat clean

 

然后回车运行

 

4,编译 custom_main 里面的工程文件

 

下面四个命令根据自己的开发板模组型号进行选择

ML307A_build.bat DCLN
ML307A_build.bat DSLN
ML307A_build.bat GCLN
ML307A_build.bat GSLN

输入 ML307A_build.bat DSLN 命令,然后按回车键执行

image

 

 

5,将会生成out文件夹, 里面有程序固件

image

 

image

 

下载程序固件

1,解压下载工具(根据电脑系统进行选择)

 

 

 

 

 

2,选择烧录文件

image

 

3,然后点击START

image

 

4,按一下boot按键让开发板进入下载程序模式;

这边的电路做了一键BOOT, 只需要按一下boot按键就可以; 去掉了原先繁琐的先按下boot 再复位才能进入boot下载模式的操作;

image     image

  

5,正在下载

image

 

 

下载完成

 

6,下载完成以后点击BACK 返回, 然后再按键复位下开发板

之所以需要点击软件back 返回上先前页面,  是因为如果在这个页面复位芯片由于数据线还在连接着, 模组复位以后, 就会重新下载;

咱需要点击软件Back 然后再按一下开发板的RST按键, 程序就正常运行了;

image

 

 

image

 

7,正常运行, 可以看到LED每隔1S亮灭

image

 

8,可以连接日志口看下设备打印的

设备管理器会同时出现两路USB串行设备, 一般COM比较小的是AT口, 大的是DEBUG日志口

image

image

image

 

 image

 

 

 

烧录更简便的方式(这样子的话可以连续烧录一个一个的模组)

在这个下载页面, 使用数据线重新连接开发板, 这样子就会自动下载;

如果没有自动下载,那只得先一直按着BOOT按键,然后按一下RST按键, 然后松开RST按键, 看到开始下载后松开BOOT;

 

 

 

 

在这个下载页面, 把多个开发板分别连接电脑USB口,可以一次性烧录多个板子;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

posted on 2024-05-24 01:55  杨奉武  阅读(5348)  评论(0)    收藏  举报

导航

支付宝 QQ群